我有一个带有重复索引和一列的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,数据是我最终得到的数据。任何有关优化此代码的帮助都将受到高度赞赏。
答案 0 :(得分:3)
void webSocketServerEvent(String webSocketMessage){
this.msg = webSocketMessage;
println(msg);
}
+ set_index
unstack
答案 1 :(得分:2)
我的pd.Series
再次出现
df.groupby(level=0).value.apply(list).apply(pd.Series)
Out[630]:
0 1 2
1 0.996957 1.098198 1.184518
2 1.255916 1.312393 NaN
让我这样做pivot
df.assign(New=df.value.groupby(df.index).cumcount()).reset_index().pivot('index','New','value')
Out[635]:
New 0 1 2
index
1 0.996957 1.098198 1.184518
2 1.255916 1.312393 NaN