如何解决有什么办法可以正确地将两个时间序列与熊猫中不同的暗点合并?
我打算在熊猫中加入两个不同维度的时间序列。第一个时间序列是关于covid19每日案例数据,而第二个时间序列是关于食品加工厂的每日切割统计数据,然后我想通过其公共列将合并的数据框与另一个数据连接起来。首先,我想按日期将它们加入某些说明中。在covid案例时间序列中,数据是按县级别记录的,而在每日截割时间序列中,有每日截割统计信息,可以是每个县的平均每日割裂时间序列,也可以是均匀分布的。为了使加入这两个时间序列更加合乎逻辑,我进行了一些汇总并尝试加入,但未按预期工作。谁能建议在熊猫中实现这一目标的可能方法?有想法吗?
当前尝试和可再现的数据
这里daily cut time series来自NYT covid19数据,this data来自食品加工机构。这是我目前的尝试:
import pandas as pd
df1= pd.read_csv("us_covid_by_counties.csv")
df1 = df1.drop(columns=['Unnamed: 0'],inplace=True)
df2= pd.read_csv("daily_cut.csv")
df2 = df2.drop(columns=['Unnamed: 0'],inplace=True)
## process and aggregate covid time series
ctyList = list(df1['county'].unique())
df1_new= {}
for c in ctyList:
cty_df = df1[df1['county']==c]
cty_df['new_cases'] = cty_df['cases'].diff()
cty_df['new_deaths'] = cty_df['deaths'].diff()
df1_new[c] = cty_df
df1_new = pd.DataFrame.from_dict(df1_new,orient='index')
然后,我尝试以这种方式合并它们:
df_merged = pd.concat([df1_new,df2]).sort_values('date').reset_index(drop=True)
更新:
如果可以正确完成df1_new
和df2
的合并,我想通过df_merged
将county_state
与{{3}}再次合并。有什么办法可以解决这个问题?
但是我很难正确地加入这两个时间序列。谁能提出任何可行的想法来完成这项工作?有什么想法吗?
解决方法
要在评论中完成@XXavier的建议,
确保正确导入日期:
df1 = pd.read_csv('data/us_covid_by_counties.csv',parse_dates=['date']).drop(columns=['Unnamed: 0'])
df2 = pd.read_csv('data/daily_cut.csv',parse_dates=['date']).drop(columns=['Unnamed: 0'])
添加所需的列:
df1['new_cases'] = df1.groupby(['county'])['cases'].diff()
df1['new_deaths'] = df1.groupby(['county'])['deaths'].diff()
创建合并的df:
df_merged = pd.merge_asof(df1,df2,on="date",direction='nearest')
,
在最初的问题中,您提到了两个数据框。在您的评论中,您提到了另一个数据框。这是一个不同的问题吗? merge_asof
适用于您的原始数据集。请看下面
这是将数据类型更改为datetime
df1['date'] = pd.to_datetime(df1['date'])
df2['date'] = pd.to_datetime(df2['date'])
这是我得到的输出
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。