如何将年度金额添加到Pandas中的每日数据

如何将年度金额添加到Pandas中的每日数据,pandas,Pandas,我有两个熊猫数据帧。其中一个每月都有数据,另一个每年都有数据。我需要做一些计算,把年值加到月值上 大概是这样的: 2013-01-01 (1+1) = 2 2013-02-01 (1+1) = 2 ... 2014-01-01 (1+2) = 3 2014-02-01 (1+2) = 3 ... 2015-01-01 (1+3)

我有两个熊猫数据帧。其中一个每月都有数据,另一个每年都有数据。我需要做一些计算,把年值加到月值上

大概是这样的:

    2013-01-01         (1+1) = 2
    2013-02-01         (1+1) = 2
            ...
    2014-01-01         (1+2) = 3
    2014-02-01         (1+2) = 3
            ...
    2015-01-01         (1+3) = 4
df1,每月:

    2013-01-01         1
    2013-02-01         1
            ...
    2014-01-01         1
    2014-02-01         1
            ...
    2015-01-01         1
df2,每年:

    2013-01-01         1
    2014-01-01         2
    2015-01-01         3
我想制作这样的东西:

    2013-01-01         (1+1) = 2
    2013-02-01         (1+1) = 2
            ...
    2014-01-01         (1+2) = 3
    2014-02-01         (1+2) = 3
            ...
    2015-01-01         (1+3) = 4
如果根据年份将月度数据的值添加到年度数据的值中(括号中的第一个值是月度数据,第二个值是年度数据)。

假设您的“月”列在数据框
df
中被称为
date
,则您可以使用成员获取年份:

将这样的列添加到您的月份数据框中,并将其命名为
year
。(有关说明,请参阅)

现在对年份数据框执行相同的操作

对月和年数据帧执行一次调整,指定
how=left

在结果数据框中,您将拥有两列。现在只需添加它们


示例

month_df = pd.DataFrame({
    'date': ['2013-01-01', '2013-02-01', '2014-02-01'],
    'amount': [1, 2, 3]})
year_df = pd.DataFrame({
    'date': ['2013-01-01', '2014-02-01', '2015-01-01'],
    'amount': [7, 8, 9]})

month_df['year'] = pd.to_datetime(month_df.date).dt.year
year_df['year'] = pd.to_datetime(year_df.date).dt.year

>>> pd.merge(
    month_df, 
    year_df, 
    left_on='year', 
    right_on='year',
    how='left')
    amount_x    date_x  year    amount_y    date_y
0   1   2013-01-01  2013    7   2013-01-01
1   2   2013-02-01  2013    7   2013-01-01
2   3   2014-02-01  2014    8   2014-02-01

谢谢你,阿美,但是什么是dt?@Landmaster不客气。请参阅答案的更新-它包含一个链接。