簡體   English   中英

從另一個數據幀添加到數據幀字符串值中的列

[英]Add to a column in dataframe string value from another dataframe

我有以下數據框,並希望將 df 中的列分數列在 df1 中的列摘要中。 當兩個數據框中的年份和名稱相等時,我無法在同一個字段中添加 2 個值(在這種情況下,我想在名稱 ="juli" 和 year = "2010" 時將分數添加到 df1 的行中摘要欄中的“25,54”:代碼如下:

import pandas as pd

lst = [['juli', 25,2010], ['krish', 30,2020],
       ['nick', 26, 2021], ['juli', 22,2020],['juli', 54,2010]]
    
df = pd.DataFrame(lst, columns =['Name', 'score',"year"])
lst1 = [['juli', 2,2010], ['krish', 1,2020],
       ['nick', 1,2021], ['juli', 1,2020] ]
    
df1 = pd.DataFrame(lst1, columns =['Name', 'm_count',"year"])

df1.insert(3,"summary",0)

for i in range(len(df1)):
        for j in range(len(df)):
            if df1["m_count"].values[i]==1:
                if df1["Name"].values[i] == df["Name"].values[j] and df1["year"].values[i] == df["year"].values[j]:
                    df1["summary"].values[i]= df["score"].values[j]
            else:
                ...

print(df1)

目前的結果是:

    Name  m_count  year  summary
0   juli        2  2010        0
1  krish        1  2020       30
2   nick        1  2021       26
3   juli        1  2020       22

所需的結果:

    Name  m_count  year  summary
0   juli        2  2010       25,54
1  krish        1  2020       30
2   nick        1  2021       26
3   juli        1  2020       22

使用groupby來匯總每個['Name', 'year']的分數,在這種情況下,只需將它們連接起來即可獲得所需的輸出。 然后將結果合並回另一個 DataFrame。 那一列 0 是必要的,並且對合並有問題,所以我放棄了它。

s = (df['score'].astype(str)
       .groupby([df['Name'], df['year']])
       .agg(','.join)
       .rename('summary'))

df1 = df1.drop(columns='summary').merge(s, on=['Name', 'year'], how='left')

    Name  m_count  year summary
0   juli        2  2010   25,54
1  krish        1  2020      30
2   nick        1  2021      26
3   juli        1  2020      22

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM