我需要按照过程中的一些规则将两个数据文件合并在一起。我对如何使用熊猫创建和合并csv略有了解,但是我不知道如何遵循某些规则。
我有两个文件作为示例:
actual_data.csv
type region_1 region_2 date data
aw west 2 10/01/2017 0.9318274971234
hss east 3 05/12/2015 0.7136487234972
. . . . .
. . . . .
. . . . .
forecast_data.csv
type region_1 region_2 date data
jad north 22 11/13/2025 0.71283741932
js east 3 04/16/2023 0.16238471239
. . . . .
. . . . .
. . . . .
我需要按照以下规则合并这些文件:
答案 0 :(得分:3)
您需要对实际预测进行左连接(基于您的要求,即应填写缺少的实际数据,如果您希望缺少预测数据,则需要进行外部连接)。
import pandas as pd
act_df = pd.read_csv(actual_data.csv)
fore_df = pd.read_csv(forecast_data.csv)
res = fore_df.merge(act_df, on=['type', 'region_1', 'region_2'], how='left', suffixes=('_fore', '_act'))
这时,res将具有一个合并列['type', region_1', region_2']
,2个日期列(date_fore
,date_act
)和2个数据列(data_fore
,{ {1}})。在此处,您可以用预测日期填充实际日期的空值,然后根据需要将其折叠到单个列中:
date_act
对于数据,这是类似的操作:
res['date'] = res['date_act'].fillna(res['date_fore'])
res.drop(['date_fore', 'date_act'], axis=1, inplace=True)
答案 1 :(得分:1)
combine_first
。import numpy as np
import pandas as pd
df1 = pd.DataFrame({'a':[1,2,np.nan], 'b':['x','y','z']})
df2 = pd.DataFrame({'a':[1,3,4], 'b':['a','b','c']})
df = pd.DataFrame()
for col in df1.columns:
df[col] = df1[col].combine_first(df2[col])
df
输出:
# df1
a b
0 1.0 x
1 2.0 y
2 NaN z
#df2
a b
0 1 a
1 3 b
2 4 c
#df
a b
0 1.0 x
1 2.0 y
2 4.0 z