簡體   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