【发布时间】:2020-06-10 07:30:22
【问题描述】:
我有一个 csv 文件,其中每一行都有一个日期 yyyy-MM-dd 和一个计数(例如 1、2、6)。
2020-06-08,53
202-06-09,12
我将其读入数据框并在日期上编制索引:
import pandas as pd
data_df = pd.read_csv('data.csv', header=0, names=['date', 'count'])
data_df['dt'] = pd.to_datetime(data_df['date'])
data_df = data_df.set_index('dt')
data_df.drop(['date'], axis=1, inplace=True)
然后我为一个日期范围创建一个数据框:
date_rng = pd.date_range(start='1/1/2020', end='12/31/2020', freq='D')
df = pd.DataFrame(date_rng, columns=['date'])
df['dt'] = pd.to_datetime(df['date'])
df = df.set_index('dt')
df.drop(['date'], axis=1, inplace=True)
df['count'] = 0
然后我将它们合并:
df.update(data_df)
当我打印 df 时,它看起来是正确的 - 它包含默认数据,并且在 csv 中存在的位置包含来自相应 csv 行的实际计数。
然后我使用 Calmap 模块 (https://pythonhosted.org/calmap/) 生成全年的热图:
calmap.yearplot(df, year=2020, cmap='YlGn', daylabels='SMTWTFS', fig_kws=dict(figsize=(8, 4)))
我收到此错误:
ValueError: Shape of passed values is (1, 4), indices imply (366, 4)
我遗漏了一些明显的东西。上面的大部分代码都是从某个地方提取的。
感谢任何帮助。我对 pandas 很陌生,我正在学习一些教程,但到目前为止还没有。
【问题讨论】:
标签: python pandas dataframe csv