我有一个大的pandas数据框,其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
如何将具有相同ID
的pandas数据帧的所有元素折叠并连接到单个单元格中。例如:
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
值和字符串。
答案 0 :(得分:2)
你可以尝试
df.index=df.ID
yourdf=df.stack().astype(str).groupby(level=[0,1]).apply(','.join).unstack().reindex(columns=df.columns)