gpt4 book ai didi

python - pandas 每日平均值,pandas.resample

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:48 26 4
gpt4 key购买 nike

我有一个类似于此的 csv 文件

Date,Temp1,Temp2

23-Oct-09 01:00:00,21.1,22.3

23-Oct-09 04:00:00,22.3,23.8

23-Oct-09 07:00:00,21.4,21.3

23-Oct-09 10:00:00,21.5,21.6

23-Oct-09 13:00:00,22.3,23.8

23-Oct-09 16:00:00,21.4,21.3

23-Oct-09 19:00:00,21.1,22.3

23-Oct-09 22:00:00,21.4,21.3

24-Oct-09 01:00:00,22.3,23.8

24-Oct-09 04:00:00,22.3,23.8

24-Oct-09 07:00:00,21.1,22.3

24-Oct-09 10:00:00,22.3,23.8

24-Oct-09 13:00:00,21.1,22.3

24-Oct-09 16:00:00,22.3,23.8

24-Oct-09 19:00:00,21.1,22.3

24-Oct-09 22:00:00,22.3,23.8

我已经阅读了数据:

df=pd.read_csv('data.csv', index_col=0)

并将索引转换为日期时间

df.index=pd.to_datetime(df.index)

现在我想取每个每日温度的平均值,我一直在尝试如下使用 pd.resample,但一直收到错误。我已经阅读了 pandas.resample 文档和此处的大量示例,但仍然不知所措......

df_avg = df.resample('D', how = 'mean')

DataError: No numeric types to aggregate

我希望 df_avg 是一个带有日期时间索引和两个 2 列的数据框。我正在使用 pandas 0.17.1 和 python 3.5.2,非常感谢任何帮助!

最佳答案

您需要先将 string 列转换为 float:

#add parameter parse_dates for convert to datetime first column
df=pd.read_csv('data.csv', index_col=0, parse_dates=[0])

df['Temp1'] = df.Temp1.astype(float)
df['Temp2'] = df.Temp2.astype(float)

df_avg = df.resample('D').mean()

如果 astype 返回 error,问题是有一些非数值。所以你需要使用 to_numeric使用 errors='coerce' - 然后所有“有问题”的值都转换为 NaN:

df['Temp1'] = pd.to_numeric(df.Temp1, errors='coerce')
df['Temp2'] = pd.to_numeric(df.Temp2, errors='coerce')

您还可以使用 boolean indexing 检查所有具有问题值的行:

print df[pd.to_numeric(df.Temp1, errors='coerce').isnull()]
print df[pd.to_numeric(df.Temp2, errors='coerce').isnull()]

关于python - pandas 每日平均值,pandas.resample,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39603399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com