我有一个带有重复索引和单列的 pandas df:
value
1 0.996957
1 1.098198
1 1.184518
2 1.255916
2 1.312393
我想要做的是获得一个具有唯一索引的 df,以及每个索引作为列的不同值。 df 的最后一列将取决于出现次数最多的索引。
所以对于这个例子,我想要:
1 2 3
1 0.996957 1.098198 1.184518
2 1.255916 1.312393 NaN
到目前为止我所做的是有效的,但肯定可以通过索引改进分组并以某种方式通过组构建新的 df:
data = pd.DataFrame(columns=np.arange(df.groupby(df.index)\
.count().value.max()))
for i in np.unique(df.index.values):
data_points_i = pd.DataFrame(df.loc[i,:].value.values).transpose()
data = pd.concat([data,data_points_i], axis = 0)
data.index = df.index.unique()
其中 df 是原始 df,而 data 是我最终得到的。如果您能帮助优化这段代码,我们将不胜感激。
最佳答案
设置索引
+ unstack
df.set_index(df.groupby(level=0).cumcount(), append=True).unstack()['value']
0 1 2
1 0.996957 1.098198 1.184518
2 1.255916 1.312393 NaN
关于python - 将 DataFrame 中的组堆叠在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50375913/