2
TLDR:我一直试图找到一个内置的解决方案,与转动重复非数值数据,而不在大熊猫聚集,保持所有副本没有成功。我进行了自定义操作,但我想知道是否有更好的方法。枢轴与重复的非数值数据,而不在大熊猫聚集,保持所有复制
我想从这个格式让我的数据:
CAT FLDNAME Value
0 CAT 1 DIM1 A
1 CAT 1 DIM2 B
2 CAT 1 DIM2 C
3 CAT 2 DIM1 D
4 CAT 2 DIM2 E
5 CAT 2 DIM2
到
CAT DIM1 DIM2
0 CAT 1 A B
1 CAT 1 A C
2 CAT 2 D E
2 CAT 2 D
可能性:
No duplicates among grouping columns. Does not require aggregation
- pivot
- set_index
Duplicates among grouping columns. Does require aggregation
- pivot_table
- groupby
按piRSquared的总结中Pivot a pandas DataFrame to be the correct format: `DataError: No numeric types to aggregate`
种所有上述方法都需要既可以当非唯一索引拆垛FLDNAME,或需要聚集。我也用set_index与追加= True和拆垛尝试,但结束了
CAT DIM1 DIM2
0 CAT 1 A
1 CAT 1 B
2 CAT 1 C
3 CAT 2 D
4 CAT 2 E
4 CAT 2
但是,我用下面的创建从类别(CAT)和FLDNAME逐步更名为和左加入了分组昏暗的数据帧。
cats = df.CAT.unique()
df2 = pd.DataFrame(cats, columns=['CAT'])
for i, grp in df.groupby('FLDNAME'):
grp.columns = ['CAT', 'FLDNAME', i]
df2 = df2.merge(grp[['CAT', i]], how='left', on='CAT')
是否有更好的方法可以使用开箱?
我应该多一个问题增加了:我使用的数据集包含空值,即不是所有的猫都的DIM和值一些的DIM是专门为空,所以ffill最终将覆盖空值。抱歉不清楚。 编辑:似乎工作,一旦我删除了ffill! – Mark
另外,这是如何工作的? – Mark