gpt4 book ai didi

python - 在一列中合并具有相同值的 2 个数据框

转载 作者:太空狗 更新时间:2023-10-30 02:27:19 24 4
gpt4 key购买 nike

我有 2 个数据框。一种是这种形式:

df1:
date revenue
0 2016-11-17 385.943800
1 2016-11-18 1074.160340
2 2016-11-19 2980.857860
3 2016-11-20 1919.723960
4 2016-11-21 884.279340
5 2016-11-22 869.071070
6 2016-11-23 760.289260
7 2016-11-24 2481.689270
8 2016-11-25 2745.990070
9 2016-11-26 2273.413250
10 2016-11-27 2630.414900

另一种是这种形式:

df2:

CET MaxTemp MeanTemp MinTemp MaxHumidity MeanHumidity MinHumidity
0 2016-11-17 11 9 7 100 85 63
1 2016-11-18 9 6 3 93 83 66
2 2016-11-19 8 6 4 93 87 76
3 2016-11-20 10 7 4 93 84 81
4 2016-11-21 14 10 7 100 89 77
5 2016-11-22 13 10 7 93 79 63
6 2016-11-23 11 8 5 100 91 82
7 2016-11-24 9 7 4 93 80 66
8 2016-11-25 7 4 1 87 74 57
9 2016-11-26 7 3 -1 100 88 61
10 2016-11-27 10 7 4 100 81 66

两个数据框都有更多的行,并且行数每天都在增加。

我想以某种方式组合这两个数据帧,每次我们在 df1['date']df2['CET'] 中看到相同的日期,我们将向 df2 添加一个额外的列,该列将具有该日期的收入值。所以我想创建这个:

df2:

CET MaxTemp MeanTemp MinTemp MaxHumidity MeanHumidity MinHumidity revenue
0 2016-11-17 11 9 7 100 85 63 385.943800
1 2016-11-18 9 6 3 93 83 66 1074.160340
2 2016-11-19 8 6 4 93 87 76 2980.857860
3 2016-11-20 10 7 4 93 84 81 1919.723960
4 2016-11-21 14 10 7 100 89 77 884.279340
5 2016-11-22 13 10 7 93 79 63 869.071070
6 2016-11-23 11 8 5 100 91 82 760.289260
7 2016-11-24 9 7 4 93 80 66 2481.689270
8 2016-11-25 7 4 1 87 74 57 2745.990070
9 2016-11-26 7 3 -1 100 88 61 2273.413250
10 2016-11-27 10 7 4 100 81 66 2630.414900

有人可以帮我怎么做吗?

最佳答案

我想你可以使用 map :

df2['revenue'] = df2.CET.map(df1.set_index('date')['revenue'])

也可以将Series转换为dict,这样在大df中会快一些:

df2['revenue'] = df2.CET.map(df1.set_index('date')['revenue'].to_dict())

print (df2)
CET MaxTemp MeanTemp MinTemp MaxHumidity MeanHumidity \
0 2016-11-17 11 9 7 100 85
1 2016-11-18 9 6 3 93 83
2 2016-11-19 8 6 4 93 87
3 2016-11-20 10 7 4 93 84
4 2016-11-21 14 10 7 100 89
5 2016-11-22 13 10 7 93 79
6 2016-11-23 11 8 5 100 91
7 2016-11-24 9 7 4 93 80
8 2016-11-25 7 4 1 87 74
9 2016-11-26 7 3 -1 100 88
10 2016-11-27 10 7 4 100 81

MinHumidity revenue
0 63 385.94380
1 66 1074.16034
2 76 2980.85786
3 81 1919.72396
4 77 884.27934
5 63 869.07107
6 82 760.28926
7 66 2481.68927
8 57 2745.99007
9 61 2273.41325
10 66 2630.41490

如果所有输出值都是 NAN 问题是 CETdate 列的不同 dtypes:

print (df1.date.dtypes)
object
print (df2.CET.dtype)
datetime64[ns]

解决方案是转换 stringto_datetime :

df1.date = pd.to_datetime(df1.date)

关于python - 在一列中合并具有相同值的 2 个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41463763/

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