【问题标题】:Average value for each user from pivot table (dataframe)数据透视表中每个用户的平均值(数据框)
【发布时间】:2014-04-01 20:32:24
【问题描述】:

我从 csv 文件中提取了下表:

timestamp    user_id main_val  val1 val2    val3  transport
01/01/2011  1   1   3   1491    0   bus
01/07/2012  1   19  57  4867    5   bus
01/09/2013  1   21  63  3455    5   bus
01/02/2011  2   20  8   2121    5   bus
01/12/2012  2   240 30  3558    3   bus
01/01/2011  3   100 5   3357    3   bus
01/11/2012  3   3100    49  1830        bus
01/12/2013  3   3200    51  4637    4   bus

为此,我使用了以下语句:

import pandas as pd

newnames = ['date','user_id', 'cost', 'val1']
df = pd.read_csv('expenses.csv', names = newnames, header = False)

pivoted = df.pivot('date','user_id')

现在我的数据框包含下表:

           cost    cost    cost  val1    val1   val1
user_id         1   2   3   1   2   3
timestamp                       
01/01/2011  1       100 3       5
01/02/2011      20          8   
01/07/2012  19          57      
01/09/2013  21          63      
01/11/2012          3100            49
01/12/2012      240         30  
01/12/2013          3200            51

我现在如何计算每个 user_id 的月平均费用和 val1?

提前感谢您的帮助。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可能想使用重采样方法 http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.resample.html

    import pandas as pd
    import numpy as np
    
    newnames = ['date','user_id', 'cost', 'val1']
    df = pd.read_csv('expenses.csv', names = newnames, header = False)
    df['date'] = pd.to_datetime(df['date'])
    pivoted = df.pivot('date','user_id')
    pivoted.resample('M')
    

    【讨论】:

    • 不幸的是它不起作用:我收到错误消息“仅对 DatetimeIndex 或 PeriodIndex 有效”。
    • 您可以在使用数据透视表之前将时间戳列转换为日期时间类型。见编辑
    • 你能解释一下吗?你的意思是像 :import pandas as newnames = ['date','user_id', 'cost', 'val1'] df = pd.read_csv('expenses.csv', names = newnames, header = False) df。 index = pd.to_datetime(df.index, dayfirst=True) pivoted = df.pivot('date','user_id')
    • 当我使用它时,我获得了一个额外的行作为索引和白色日期 1970-01-01 00:00:00 , 1970-01-01 00:00:01, 1970-01-01 00 :00:02 等
    • 在 'df.timestamp = df.timestamp.astype(np.datetime64)' 我收到错误消息:'DataFrame' 对象没有属性 'timestamp'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    相关资源
    最近更新 更多