Pivot Dataframe With Duplicate Values
consider the below pd.DataFrame temp = pd.DataFrame({'label_0':[1,1,1,2,2,2],'label_1':['a','b','c',np.nan,'c','b'], 'values':[0,2,4,np.nan,8,5]}) print(temp) label_0 labe
Solution 1:
d ={}for _0, _1, v in zip(*map(temp.get, temp)):
d.setdefault(_1,{})[_0]= v
pd.DataFrame.from_dict(d, orient='index')12
a 0.0NaN
b 2.05.0c4.08.0NaNNaNNaN
OR
pd.DataFrame.from_dict(d, orient='index').rename_axis('label_1').reset_index()
label_1 120 a 0.0NaN1 b 2.05.02c4.08.03NaNNaNNaN
Solution 2:
Another way is to use set_index and unstack:
temp.set_index(['label_0','label_1'])['values'].unstack(0)
Output:
label_0 12
label_1
NaNNaNNaN
a 0.0NaN
b 2.05.0c4.08.0
Solution 3:
You can do fillna
then pivot
temp.fillna('NaN').pivot(*temp.columns).T
Out[251]:
label_0 12
label_1
NaNNaNNaN
a 0NaN
b 25c48
Solution 4:
Seems like a straightforward pivot
works:
temp.pivot(columns='label_0', index='label_1', values='values')
Output:
label_0 12
label_1
NaNNaNNaN
a 0.0NaN
b 2.05.0c4.08.0
Post a Comment for "Pivot Dataframe With Duplicate Values"