2017-11-10 65 views
1

我使用熊猫作为Python的一部分,我有下表。我不能为我的生活弄清楚如何做到以下几点。任何帮助将非常感激。结合熊猫DataFrame中的多行数据

我有一个数据表,有很多重复的时间点。然而,每个重复的时间点都有不同的行填充部分。我想将所有时间点合并到一个包含所有信息的行中。

我不想总结列。 我不想连接列。

我想获取某个列中单个时间点的第一个值,并忽略同一时间点的该列中的任何附加值。

表格应该使这更清晰。

+----------------+---+---+---+--+---+---+---+--+---+---+---+ 
| 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 | 
+----------------+---+---+---+--+---+---+---+--+---+---+---+ 

我希望得到任何帮助。

回答

0

假定所述时间戳是索引,使用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=0df.columns[0]代替。

此处的另一个假设是您的空值为NaN s。如果没有,以前分组替换它们

df = df.replace('^\s*$', np.nan, regex=True) 
+0

感谢它美丽的工作。林新本网站,所以请让我知道,如果有什么我可以做,以表明你的答案是好的 –

+0

@NimayKulkarni你已经接受了我的答案,所以这是很大的。一旦你达到15代表,如果你觉得他们有帮助,你也可以提出答案。快乐的编码。 –