簡體   English   中英

通過與其他 df 列進行比較,從一個 df 列的值列表中提取值

[英]Extract value from list of values in one df column by comparing with other df column

數據框包含兩列。

| Extraction                       | Actual    |
| -------------------------------- | --------- |
| [1_CHECK_90,2_SAVE_43,3_GO_56]   | 2_SAVE    |
| [1_FIN_54,2_CHECK_22]            | 1_FIN_54  |
| [1_L_32,2_Y_79,4_X_66]           | 2_Y_79    |
| [5_T_88]                         | NA        |

通過與 Extraction 列左側的數字進行比較,將 Extraction 轉換為 Actual。

def extract_actual(row):
    try:
        a =[]
        for i in row['Extraction']:
            for j in i:
                for k in j.split("_"): 
                    # print(k)
                    for l in row['Actual']:
                        if k == l:
                            a.append(j)
        return a
    except: 
        a =[]
        return a

我嘗試使用上面的 function。它工作正常但對於 Actual='NA' 沒有返回。

你能試試這個嗎

import pandas as pd

df = pd.DataFrame({'Extraction': [['1_CHECK', '2_SAVE', '3_GO'],                     
['1_FIN', '2_CHECK'], ['1_L', '2_Y', '4_X'], ['5_T']], 
'Actual': ['2_SAVE', '1_FIN', '2_Y', None]})

# get equal values index true false values
tFdf = df[df.columns.difference(["Expected"])].eq(df["Actual"], axis=0) 

# Assign matched values  
df["Extraction"].loc[tFdf["Actual"]] = df["Actual"][tFdf["Actual"]]

暫無
暫無

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

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