有什么办法可以在python pandas中获取以下数据框?

时间:2020-05-27 22:30:23

标签: python-3.x pandas dataframe

我有一个这样的数据框:

ID  Distance
100007  0
100007  0
100007  0
100007  0
100007  0
100007  0
100013  39.22
100013  39.21
100013  39.21
100013  39.20
100013  39.19
100013  39.19
100013  39.21
100019  20.28
100019  29.74
100019  29.70
100019  29.73

从上面的数据框中我想得到这个:

ID      d1        d2    d3        d4      d5     d6      d7
100007  0          0    0          0       0      0 
100013  39.22   39.21   39.21   39.20   39.19   39.19   39.21
100019  20.2    29.74   29.70   29.73           

如何使用python 3大熊猫获得此信息?请帮助我,谢谢!

2 个答案:

答案 0 :(得分:2)

res = (df
       .astype(str)
       .groupby("ID")
       .Distance.agg(",".join)
       .str.split(",",expand=True)
      )


res.columns = [ent+1 for ent in res.columns]
res.add_prefix("d")

         d1     d2      d3      d4      d5      d6      d7
ID                          
100007  0.0     0.0     0.0     0.0     0.0     0.0     None
100013  39.22   39.21   39.21   39.2    39.19   39.19   39.21
100019  20.28   29.74   29.7    29.73   None    None    None

答案 1 :(得分:1)

country_region

打印:

g = df.groupby('ID')['Distance'].agg(list).to_list()
df2 = pd.DataFrame(g, columns=['d{}'.format(i) for i in range(1, len(max(g, key=len))+1)])
print(pd.concat([pd.Series(df['ID'].unique()), df2], axis=1).rename(columns={0:'ID'}))