【问题标题】:Merge pandas dataframe with dataframe from csv将 pandas 数据框与来自 csv 的数据框合并
【发布时间】: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


    【解决方案1】:

    你能不能试试通过Series

    calmap.yearplot(df['count'], year=2020, cmap='YlGn', daylabels='SMTWTFS', fig_kws=dict(figsize=(8, 4)))
    

    【讨论】:

    • 谢谢!此外,结果证明calmap 不适用于pandas 1.x,所以我切换到calplot 并继续前进。谢谢。
    猜你喜欢
    • 2021-12-14
    • 2021-10-08
    • 1970-01-01
    • 2017-01-21
    • 2017-06-27
    • 2018-01-31
    • 1970-01-01
    • 2018-12-04
    • 2017-07-10
    相关资源
    最近更新 更多