【问题标题】:pandas: merge rows on timestamp熊猫:在时间戳上合并行
【发布时间】:2013-01-08 22:26:02
【问题描述】:

我的数据如下所示:

 date, cola, colb, colc
 1,10,,
 2,11,,
 3,12,,
 4,13,,
 1,,14,
 2,,15,
 3,,16,
 4,,17,
 1,,,17
 2,,,18
 3,,,19
 4,13,,20

我想根据第一列合并行,输出如下所示:

 date, cola, colb, colc
 1,10,14,17
 2,11,15,18
 3,12,16,19
 4,13,17,20

我不能保证不会有任何冲突,所以我希望能够选择最大值或平均值。

【问题讨论】:

    标签: python merge pandas rows


    【解决方案1】:

    您可以使用groupby。从带有重复项的csv 开始:

    >>> !cat tomerge.csv
    date, cola, colb, colc
    1,10,,
    2,11,,
    1,,14,
    2,,15,
    1,,24,
    2,,40,
    1,,,17
    2,,,18
    

    阅读:

    >>> df = pd.read_csv("tomerge.csv")
    >>> df
       date   cola   colb   colc
    0     1     10    NaN    NaN
    1     2     11    NaN    NaN
    2     1    NaN     14    NaN
    3     2    NaN     15    NaN
    4     1    NaN     24    NaN
    5     2    NaN     40    NaN
    6     1    NaN    NaN     17
    7     2    NaN    NaN     18
    

    然后神奇的事情发生了:

    >>> df.groupby("date").mean()
           cola   colb   colc
    date                     
    1        10   19.0     17
    2        11   27.5     18
    >>> df.groupby("date").max()
           cola   colb   colc
    date                     
    1        10     24     17
    2        11     40     18
    

    【讨论】:

    • 当我使用 read_csv 时,所有的列都会被导入。但是,在我使用 groupby 之后,现在缺少许多列。它只保留了前几列
    • @user1647854:我需要查看更多您的数据才能弄清楚发生了什么。由于您发布的示例对我来说很好,您能否提出仍然给您带来问题的最小示例并将其编辑到您的问题中?
    猜你喜欢
    • 2016-12-12
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2020-12-06
    • 2013-02-03
    • 1970-01-01
    相关资源
    最近更新 更多