我是新来的大熊猫在蟒蛇和我会感谢任何帮助这一点。我一直在搜索,但似乎无法破解它。
例如,我有一个包含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
                                                                                                                                                                           .

因此,正如上面所看到的,前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()

python - 在 Pandas 中,我如何弄平一组行-LMLPHP

关于python - 在 Pandas 中,我如何弄平一组行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41830647/

10-16 01:10