python - 有什么方法可以正确合并熊猫中具有不同暗度的两个时间序列?
问题描述
我打算在熊猫中加入两个不同维度的时间序列。第一个时间序列是关于covid19每日病例数据,而第二个时间序列是食品加工厂的每日切割统计数据,然后我想通过其公共列将合并的数据框与另一个数据连接起来。首先,我想按特定规格加入他们。在covid病例时间序列中,数据是按县级记录的,而在日切时间序列中,有日切统计,可以是每个县的平均日切时间序列,也可以是均匀分布的。为了使加入这两个时间序列更合乎逻辑,我做了一些聚合并尝试加入,但它没有按我预期的那样工作。任何人都可以建议在熊猫中实现这一点的可能方法吗?任何的想法?
当前的尝试和可重复的数据
这是gist 中的covid 时间序列数据来自 NYT covid19 数据和食品加工机构的每日切割时间序列。这是我目前的尝试:
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
但我很难正确加入这两个时间序列。任何人都可以提出任何可能的想法来完成这项工作吗?有什么可能的想法吗?
解决方案
要在评论中完成@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')
推荐阅读
- python - 当用户输入为空时Python引发错误
- excel - 如何在 VBA 中定义下一个循环的范围
- windows - 如何写入 BitLocker 加密卷的物理扇区?
- python - Django 路径不起作用,它会将我引导到错误的网站
- javascript - vue watch sublist如何变化或v-model
- javascript - 如何为我的应用获取 Shopify 商店产品的所有数据?
- c# - 当我更新现有数据时 System.Reflection.TargetException ERROR
- excel - Excel / Apache POI:如何转义 Excel 单元格的字符串?
- flutter - 如何使用 Dart::FFI 在颤振中使用 C++ 库?
- php - Foreach 2 var $_POST