我环顾了很长一段时间,似乎找不到正确的答案。
我试图按第一列(名称)分组,然后将结果显示为列。任何帮助将不胜感激。
我是编程新手,我们将不胜感激。谢谢。
当前显示
name data
0 LAST_1 106.305
1 LAST_DATE_1 20180401
2 LAST_TIME_1 145507000
3 LAST_1 106.256
4 LAST_DATE_1 20180401
5 LAST_TIME_1 155946000
6 LAST_1 106.225
7 LAST_DATE_1 20180401
8 LAST_TIME_1 165947000
9 LAST_1 106.264
10 LAST_DATE_1 20180401
11 LAST_TIME_1 175957000
12 LAST_1 106.303
13 LAST_DATE_1 20180401
14 LAST_TIME_1 185956000
... ... ...
预期结果
LAST_1 LAST_DATE_1 LAST_TIME_1
106.342 20180401 235957000
106.321 20180401 215959000
答案 0 :(得分:2)
您想在此处设置枢纽。您可以使用pivot_table
并从name
中提取GroupBy.cumcount
来建立索引:
i = df.groupby(df.name).cumcount()
df.pivot_table(index=i, columns=df.name)
data
name LAST_1 LAST_DATE_1 LAST_TIME_1
0 106.305 20180401.0 145507000.0
1 106.256 20180401.0 155946000.0
2 106.225 20180401.0 165947000.0
3 106.264 20180401.0 175957000.0
4 106.303 20180401.0 185956000.0
5 106.321 20180401.0 195957000.0
6 106.282 20180401.0 205950000.0
7 106.342 20180401.0 215959000.0
8 106.317 20180401.0 225956000.0
9 106.361 20180401.0 235957000.0
答案 1 :(得分:1)
在第一列上使用df.groupby()
,在第二列上使用apply
列表,然后使用它创建一个数据框并转置:
m=df.groupby('name')['data'].apply(list)
m=pd.DataFrame(m.values.tolist(),index=m.index).T.rename_axis(None,axis=1)
print(m)
LAST_1 LAST_DATE_1 LAST_TIME_1
0 106.305 20180401.0 145507000.0
1 106.256 20180401.0 155946000.0
2 106.225 20180401.0 165947000.0
3 106.264 20180401.0 175957000.0
4 106.303 20180401.0 185956000.0
5 106.321 20180401.0 195957000.0
6 106.282 20180401.0 205950000.0
7 106.342 20180401.0 215959000.0
8 106.317 20180401.0 225956000.0
9 106.361 20180401.0 235957000.0