【问题标题】:Merging dataframes with pandas with two keys使用两个键将数据框与 pandas 合并
【发布时间】:2020-04-02 18:45:41
【问题描述】:

我有两个数据集,一个包含个人报告,另一个包含区域条件。单独的行比区域多得多,但我想将区域数据附加到每个人身上。我面临的问题是我必须使用两个主键进行合并,例如

个人 - 5000 行
代码 |时间 |数据1 |数据2 |数据3

区域 - 100 行
代码 |时间 |数据1 | RData2

--我尝试过但失败了:

df = individual.merge(regional, how='left', on=['Code', 'Time'])

--在新的 df 中将 RData1,2 保留为空值,这确实看起来像

df - 5000 行
代码 |时间 |数据1 |数据2 |数据3 |数据1 | RData2

但空值对我没有帮助...

Example Data
What I am seeing

【问题讨论】:

  • 如果您只是在谈论附加数据,您应该查看pd.concat。否则,每个具有预期结果的 DataFrame 的小样本将帮助人们帮助您。

标签: python pandas merge


【解决方案1】:

数据

生成随机df

 rng = pd.date_range('2015-02-24', periods=5, freq='T')
    df = pd.DataFrame({ 'Time': rng, 'data1': np.random.randn(len(rng)),'code':[201, 897,345, 70,879] }) 
    df.set_index(['Time','code'], inplace=True)
    df

生成随机df1

df1 = pd.DataFrame({ 'Time': rng, 'data1': np.random.randn(len(rng)),'code':[201, 30,345, 70,879] }) 
df1.set_index(['Time','code'], inplace=True)
df1

merge在索引上可以按如下方式完成

result =df1.merge(df, left_index=True, right_index=True, suffixes=('_Left','_Right'))
result

或者更好

result =pd.merge(df, df1,left_index=True, right_index=True, suffixes=('_Left','_Right'))
result

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2020-02-19
    • 2015-10-17
    • 2018-03-14
    • 1970-01-01
    • 2021-10-08
    • 2021-12-14
    • 2017-03-27
    • 1970-01-01
    相关资源
    最近更新 更多