根据行名称将多行合并为一行(Python)

时间:2018-06-21 01:18:40

标签: python pandas csv dataframe

所以我有一组以下通用格式的csv文件:

Post_Type      Time1      Time2      ...      TimeN
Type1          1:12
Type1                     2:34
Type1                                         0:35
Type2          1:11
Type3          5:34
Type3                                         2:45

我想将数据框重新格式化为以下格式:

Post_Type      Time1      Time2      ...      TimeN
Type1          1:12       2:34                0:35                                      
Type2          1:11
Type3          5:34                           2:45

我正从R迁移到python,因此对于在python中操纵这些数据框的理解,我对目前正在做的工作的了解非常有限,我似乎找不到其他尝试做的例子。像这样的东西。表述我正在做的事情的另一种方法是尝试将相同类型的每一行覆盖为一行,该行包含所有与原始列相对应的所有时间。所有列都是在原始csv中预定义的,因此我不需要,也不想创建更多列。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:首先用NaN替换空白单元格,然后使用groupbyPost_Type分组并调用.first,然后重新替换{{1 }},单元格为空白:

NaN

示例:

df.replace('', np.nan).groupby('Post_Type').first().replace(np.nan, '')

注意:就我个人而言,我会保留# Original Dataframe >>> df Post_Type Time1 Time2 TimeN 0 Type1 1:12 1 Type1 2:34 2 Type1 0:35 3 Type2 1:11 4 Type3 5:34 5 Type3 2:45 # Processed: >>> df.replace('', np.nan).groupby('Post_Type').first().replace(np.nan, '') Time1 Time2 TimeN Post_Type Type1 1:12 2:34 0:35 Type2 1:11 Type3 5:34 2:45 而不是用空白单元格代替,因为它们会很有用。