Python 如何根据行上的索引列进行折叠和合并?
我有一个带有Python 如何根据行上的索引列进行折叠和合并?,python,python-3.x,pandas,csv,Python,Python 3.x,Pandas,Csv,我有一个带有NaN值的大熊猫数据帧,如下所示: ID NUM val time_duration company True Data_in restriction_time top 1168 3023 NaN 0 days 00:00:00 0 NaN NaN NaN
NaN
值的大熊猫数据帧,如下所示:
ID NUM val time_duration company True Data_in restriction_time top
1168 3023 NaN 0 days 00:00:00 0 NaN NaN NaN NaN
1172 926 NaN 0 days 00:00:00 1 NaN NaN NaN NaN
121 626 NaN 0 days 00:03:11 Google NaN NaN NaN NaN
121 626 NaN NaN 3 NaN NaN NaN NaN
121 626 0 NaN 4 31/01/2018 23:59 NaN 01/01/2018 00:00 NaN
121 626 NaN NaN Amazon NaN NaN NaN NaN
121 626 NaN NaN 8 NaN NaN NaN NaN
555 2703 NaN 0 days 00:01:35 9 NaN NaN NaN NaN
555 2703 NaN NaN 10 NaN NaN NaN NaN
555 2703 NaN NaN 11 NaN NaN NaN NaN
555 2703 0 NaN 12 31/01/2018 23:59 NaN 01/01/2018 00:00 NaN
555 2703 NaN NaN 13 NaN NaN NaN NaN
如何将pandas数据框中具有相同ID
的所有元素折叠并合并到一个单元格中。例如:
ID NUM val time_duration company True Data_in restriction_time top
1168 3023 NaN 0 days 00:00:00 0 NaN NaN NaN NaN
1172 926 NaN 0 days 00:00:00 1 NaN NaN NaN NaN
121,121,121,121,121 626,626,626,626,626 0 0 days 00:03:11 Google,3,4,Amazon,8 31/01/2018 23:59 NaN 01/01/2018 00:00 NaN
555,555,555,555,555 2703,2703,2703,2703,2703 0 0 days 00:01:35 Google,3,4,Amazon,8 31/01/2018 23:59 NaN 01/01/2018 00:00 NaN
正如您所看到的,具有相同ID
的所有元素都被折叠并连接到一个单元格中,添加逗号以将所有元素与其他单元格分开。这里的问题是,我真的不明白如何使用pandas来处理NaN
值和字符串。您可以试试
df.index=df.ID
yourdf=df.stack().astype(str).groupby(level=[0,1]).apply(','.join).unstack().reindex(columns=df.columns)
你可以试试
df.index=df.ID
yourdf=df.stack().astype(str).groupby(level=[0,1]).apply(','.join).unstack().reindex(columns=df.columns)
谢谢你的帮助!谢谢你的帮助!