Spe*_*pin 4 python csv dataframe pandas
我是python中的熊猫新手,我很感激任何帮助.我一直在谷歌搜索和谷歌搜索,但似乎无法破解它.
例如,我有一个包含6列的csv文件.我试图将行组合在一起,以便每行的所有数据被展平为一行.
所以如果我的数据看起来像这样:
event event_date event_time name height age
1 2015-05-06 14:00 J Bloggs 185 24
1 2015-05-06 14:00 P Smith 176 55
1 2015-05-06 14:00 T Kirk 193 22
2 2015-05-14 17:00 B Gates 178 72
2 2015-05-14 17:00 J Mayer 184 42
而我最终想要把它弄平如此
event event_date event_time name_1 height_1 age_1 name_2 height_2 age_2 name_3 height_3 age_3
1 2015-05-06 14:00 J Bloggs 185 24 P Smith 176 55 T Kirk 193 22
2 2015-05-14 17:00 B Gates 178 72 J Mayer 184 42
.
Run Code Online (Sandbox Code Playgroud)
因此,正如您在上面看到的那样,前3行中的第一个事件已被展平为一个,并且扩展了列以容纳行数据.第二个事件已经展平,列中填充了数据.
任何帮助都会被贬低.
脚步:
1)计算Groupby对象的累积计数.添加1,以便根据需要格式化标题DF.
2)设置相同的分组的列作为索引轴线与所计算的沿cumcounts,然后unstack它.此外,根据最低级别对标题进行排序.
3)重命名多索引列并相应地展平以获得单个标题.
cc = df.groupby(['event','event_date','event_time']).cumcount() + 1
df = df.set_index(['event','event_date','event_time', cc]).unstack().sort_index(1, level=1)
df.columns = ['_'.join(map(str,i)) for i in df.columns]
df.reset_index()
Run Code Online (Sandbox Code Playgroud)