我有两个具有不同行数的数据框,一个具有每日值,第二个具有每小时值。我想比较它们,如果日期匹配,那么我想在同一天的每小时值之前添加每日值。数据框是;
import pandas as pd
df1 = pd.read_csv('C:\Users\ABC.csv')
df2 = pd.read_csv('C:\Users\DEF.csv')
df1 = pd.to_datetime(df1['Datetime'])
df2 = pd.to_datetime(df2['Datetime'])
df1.head()
Out [3]
Datetime Value
0 2016-02-02 21:00:00 0.6
1 2016-02-02 22:00:00 0.4
2 2016-02-02 23:00:00 0.4
3 2016-03-02 00:00:00 0.3
4 2016-03-02 01:00:00 0.2
df2.head()
Out [4] Datetime No of people
0 2016-02-02 56
1 2016-03-02 60
2 2016-04-02 91
3 2016-05-02 87
4 2016-06-02 90
我想要的是这样的;
Datetime Value No of People
0 2016-02-02 21:00:00 0.6 56
1 2016-02-02 22:00:00 0.4 56
2 2016-02-02 23:00:00 0.4 56
3 2016-03-02 00:00:00 0.3 60
4 2016-03-02 01:00:00 0.2 60
知道如何使用 Pandas 在 Python 中执行此操作吗?请注意,可能会缺少一些日期。
最佳答案
您可以将df1
DF的索引设置为df1.Datetime.dt.date
,然后您可以将其与df2
连接:
In [46]: df1.set_index(df1.Datetime.dt.date).join(df2.set_index('Datetime')).reset_index(drop=True)
Out[46]:
Datetime Value No_of_people
0 2016-02-02 21:00:00 0.6 56
1 2016-02-02 22:00:00 0.4 56
2 2016-02-02 23:00:00 0.4 56
3 2016-03-02 00:00:00 0.3 60
4 2016-03-02 01:00:00 0.2 60
您可能希望在调用 join()
函数时使用 how='left'
参数
关于python - 比较两个 pandas Dataframe 的日期并在日期相似时添加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37529587/