【发布时间】:2020-07-16 16:08:39
【问题描述】:
我有两个dataframe如下图df1和df2如下图。
df1:
Date t_factor category
2020-02-01 5 A
2020-02-02 2 B
2020-02-03 1 C
2020-02-04 2 A
2020-02-05 3 B
2020-02-06 3 C
2020-02-07 3 A
2020-02-08 9 B
2020-02-09 1 C
2020-02-10 8 A
2020-02-11 3 B
2020-02-12 3 C
df2:
Date beta
2020-02-01 100
2020-02-02 230
2020-02-03 150
2020-02-04 100
2020-02-05 200
2020-02-06 180
2020-02-07 190
2020-02-08 290
从上面我想根据输入日期范围将 df1 的 t_factor 列替换为 df2 的 beta 列。
函数可以是这样的。
def replace_column(df1, df2, start_date = `2020-02-03`, end_date = `2020-02-06`):
df1 = df1.copy()
df2 = df2.copy()
df1 = df1.sort_values(['Date'], ascending=True)
df2 = df2.sort_values(['Date'], ascending=True)
df1['t_factor'] = df1['beta'] # for that date range
return df1
预期输出:对于 start_date = 2020-02-03 和 end_date = 2020-02-06
df1:
Date t_factor category
2020-02-01 5 A
2020-02-02 2 B
2020-02-03 150 C
2020-02-04 100 A
2020-02-05 200 B
2020-02-06 180 C
2020-02-07 3 A
2020-02-08 9 B
2020-02-09 1 C
2020-02-10 8 A
2020-02-11 3 B
2020-02-12 3 C
注意:df2 的数据较少,df2 的最终日期为2020-02-08。
if start_date = `2020-02-07` and end_date = `2020-02-11`.
然后预期输出:
Date t_factor category
2020-02-01 5 A
2020-02-02 2 B
2020-02-03 1 C
2020-02-04 2 A
2020-02-05 3 B
2020-02-06 3 C
2020-02-07 190 A
2020-02-08 290 B
2020-02-09 1 C
2020-02-10 8 A
2020-02-11 3 B
2020-02-12 3 C
print ('df2 dont have data after 2020-02-08')
【问题讨论】:
标签: python-3.x pandas dataframe