【问题标题】:Cannot Save to CSV from Groupby无法从 Groupby 保存到 CSV
【发布时间】:2019-05-24 12:58:36
【问题描述】:

我是 python 的新手。我有一个巨大的dataframe,有数百万行和 id。我的数据如下所示:

Time    ID  X   Y
8:00    A   23  100
9:00    B   24  110
10:00   B   25  120
11:00   C   26  130
12:00   C   27  140
13:00   A   28  150
14:00   A   29  160
15:00   D   30  170
16:00   C   31  180
17:00   B   32  190
18:00   A   33  200
19:00   C   34  210
20:00   A   35  220
21:00   B   36  230
22:00   C   37  240
23:00   B   38  250

我按照id和时间对数据进行了排序。

Time    ID  X   Y
8:00    A   23  100
13:00   A   28  150
14:00   A   29  160
18:00   A   33  200
20:00   A   35  220
9:00    B   24  110
10:00   B   25  120
17:00   B   32  190
21:00   B   36  230
23:00   B   38  250
11:00   C   26  130
12:00   C   27  140
16:00   C   31  180
19:00   C   34  210
22:00   C   37  240
15:00   D   30  170

我只想选择 id 的“第一个和最后一个”并消除其余部分。结果如下所示:

Time    ID  X   Y
8:00    A   23  100
20:00   A   35  220
9:00    B   24  110
23:00   B   38  250
11:00   C   26  130
22:00   C   37  240
15:00   D   30  170

我使用了这个代码:

df = pd.read_csv("contoh.csv")
g = df.groupby('ID')
(pd.concat([g.head(1), g.tail(1)])
   .drop_duplicates()
   .sort_values('ID')
   .reset_index(drop=True))

它有效,但我无法保存到 csv

g.to_csv('result.csv')

我收到一条错误消息:Cannot access callable attribute 'to_csv' of 'DataFrameGroupBy' objects, try using the 'apply' method

对我有什么建议吗?谢谢你

【问题讨论】:

    标签: pandas csv dataframe pandas-groupby


    【解决方案1】:

    当你使用 concat 函数时,你并没有将它应用到 groupby 对象 g 上。您需要将 concat 函数的输出重新分配给另一个对象。

    df = pd.read_csv("contoh.csv")
    g = df.groupby('ID')
    g_1 = pd.concat([g.head(1),g.tail(1)]).drop_duplicates().sort_values('ID').reset_index(drop=True)
    g_1.to_csv('result.csv')
    

    【讨论】:

    • 好方法。太感谢了。您介意提前添加另一个“注释”列,包括头和尾来分配每个结果行吗? @欧内斯特
    • @Arief 我不完全理解你的问题?可以举个例子吗?
    猜你喜欢
    • 2020-04-24
    • 2020-12-20
    • 1970-01-01
    • 2018-09-14
    • 2017-01-05
    • 2019-05-21
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    相关资源
    最近更新 更多