繁体   English   中英

根据另一个 dataframe 中的列值创建 dataframe 列

[英]Create a dataframe column based on values that are columns in another dataframe

我有两个数据框,第一个看起来像:

年龄 200 300 400
1 34 32 50
2 42 73 20

第二个 dataframe 看起来像

ID 年龄 分数
10 2 200
23 1 300

我的目标是在第二个 dataframe 中创建另一个列,它通过列 Age 和 Score 的相应值从第一个 dataframe 中获取值。 分数是第一个 dataframe 中的列。

生成的 dataframe:

ID 年龄 分数 数数
10 2 200 42
23 1 300 32

尝试meltmerge

tomerge = df1.melt('Age',var_name = 'Score',value_name='Count')

tomerge['Score'] = tomerge['Score'].astype(int)
out = df2.merge(tomerge)
out
Out[988]: 
   ID  Age  Score  Count
0  10    2    200     42
1  23    1    300     32

您可以从 df2 和 map 创建一个pd.MultiIndex.from_arrays到使用“年龄”索引创建的系列,然后是来自 df1 的堆栈。

    df2.Count = pd.Series(
        pd.MultiIndex.from_arrays([df2.Age, df2.Score]).map(df1.set_index('Age').stack())
    )

中间输出:

    df1.set_index('Age').stack()
    Age     
    1    200    34
         300    32
         400    50
    2    200    42
         300    73
         400    20
    dtype: int64
    
    pd.MultiIndex.from_arrays([df2.Age, df2.Score])
    
    MultiIndex([(2, 200),
                (1, 300)],
               names=['Age', 'Score'])

打印(df2):

       ID  Age  Score  Count
    0  10    2    200     42
    1  23    1    300     32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM