Python 在DataFrame中组合来自多行的数据
我使用Pandas作为Python的一部分,我有下表。我一辈子都不知道该怎么做。任何帮助都将不胜感激 我有一个数据表,其中有许多重复的时间点。但是,每个重复的时间点都会填充不同部分的行。我想把所有的时间点合并成一个包含所有信息的行 我不想对这些列求和。 我不想连接这些列 我想取某列中单个时间点的第一个值,并忽略该列中同一时间点的任何附加值 这张表格应该让这一点更加清楚Python 在DataFrame中组合来自多行的数据,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我使用Pandas作为Python的一部分,我有下表。我一辈子都不知道该怎么做。任何帮助都将不胜感激 我有一个数据表,其中有许多重复的时间点。但是,每个重复的时间点都会填充不同部分的行。我想把所有的时间点合并成一个包含所有信息的行 我不想对这些列求和。 我不想连接这些列 我想取某列中单个时间点的第一个值,并忽略该列中同一时间点的任何附加值 这张表格应该让这一点更加清楚 +----------------+---+---+---+--+---+---+---+--+---+---+---+ | 0
+----------------+---+---+---+--+---+---+---+--+---+---+---+
| 09/07/20171310 | | 1 | | | | | | | | | |
| 09/07/20171310 | | | 1 | | | | | | | | |
| 09/07/20171310 | 3 | | | | | | | | | | |
| 09/07/20171310 | | | | | | | | | | | 1 |
| 09/07/20171310 | | | | | | | 1 | | | | |
| 09/07/20171310 | | | | | | | | | 2 | | |
| 09/07/20171310 | | | | | 2 | | | | | | |
| 09/07/20171920 | | | | | | | | | | 1 | |
| 09/07/20171920 | | | | | | | | | | | 1 |
| 09/07/20171920 | | | | | | | 1 | | | | |
| 09/07/20171920 | | | | | | 1 | | | | | |
| 09/07/20171920 | | | | | | | | | 3 | | |
| 09/07/20171920 | | | | | 3 | | | | | | |
| 09/07/20171920 | 6 | | | | | | | | | | |
| 09/07/20171920 | | | 1 | | | | | | | | |
| 09/07/20171920 | | 4 | | | | | | | | | |
+----------------+---+---+---+--+---+---+---+--+---+---+---+
我想要
+----------------+---+---+---+--+---+---+---+--+---+---+---+
| 09/07/20171310 | 3 | 1 | 1 | | 2 | | 1 | | 2 | | 1 |
| 09/07/20171920 | 6 | 4 | 1 | | 3 | 1 | 1 | | 3 | 1 | 1 |
+----------------+---+---+---+--+---+---+---+--+---+---+---+
如果有任何帮助,我将不胜感激。假设时间戳是索引,请使用
groupby
+max
:
df.groupby(level=0).max().fillna('')
+----------------+---+---+---+--+---+-----+---+--+---+-----+---+
| 09/07/20171310 | 3 | 1 | 1 | | 2 | | 1 | | 2 | | 1 |
| 09/07/20171920 | 6 | 4 | 1 | | 3 | 1.0 | 1 | | 3 | 1.0 | 1 |
+----------------+---+---+---+--+---+-----+---+--+---+-----+---+
如果不是索引,则将level=0
改为df.columns[0]
这里的另一个假设是空值是NaN
s。如果没有,请在分组前更换:
df = df.replace('^\s*$', np.nan, regex=True)
谢谢,它工作得很好。我是新来这个网站的,所以请让我知道,如果有什么我可以做,以表明你的答案是正确的good@NimayKulkarni你已经接受了我的回答,那就足够了。当你达到15个代表时,如果你觉得答案有帮助,你也可以对其进行投票。快乐编码。