亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據列列表值和附加列中的值添加熊貓“匹配”?

如何根據列列表值和附加列中的值添加熊貓“匹配”?

開滿天機 2022-12-20 15:30:52
我有一個數據框,其中包含一個包含名為 Multiple_IDS 的標識符列表的列和一個名為 ID 的列?,F在,我想創建一個名為“Match”的附加列,它告訴天氣 Multiple_IDs 列中是否包含 ID。輸出應該是一個名為 Match 的附加列,其中包含 True 或 False 值。這里有一些示例輸入數據:data = {'ID':[2128441, 2128447, 2128500], 'Multiple_IDs':["2128442, 2128443, 2128444, 2128441", "2128446, 2128447", "2128503, 2128508"]} df = pd.DataFrame(data)該列表的數據類型為“object”。根據上面提供的輸入數據,期望的輸出將是這樣的。我知道我可以使用 explode 然后比較值來實現這一點,但我想知道是否有更優雅的東西?
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

使用in語句 if 是可能的測試而無需單獨的 each ID:


df['Match'] = [str(x) in y for x, y in df[['ID','Multiple_IDs']].to_numpy()]

print (df)

        ID                        Multiple_IDs  Match

0  2128441  2128442, 2128443, 2128444, 2128441   True

1  2128447                    2128446, 2128447   True

2  2128500                    2128503, 2128508  False

要么:


df['Match'] = df.apply(lambda x: str(x['ID']) in x['Multiple_IDs'], axis=1)

print (df)

        ID                        Multiple_IDs  Match

0  2128441  2128442, 2128443, 2128444, 2128441   True

1  2128447                    2128446, 2128447   True

2  2128500                    2128503, 2128508  False

另一個想法是通過拆分值匹配:


df['Match'] = [str(x) in y.split(', ') for x, y in df[['ID','Multiple_IDs']].to_numpy()]

df['Match'] = df.apply(lambda x: str(x['ID']) in x['Multiple_IDs'].split(', '), axis=1)



查看完整回答
反對 回復 2022-12-20
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

我將要做的


s=pd.DataFrame(df.Multiple_IDs.str.split(', ').tolist(),index=df.index).eq(df.ID.astype(str),axis=0).any(1)

Out[10]: 

0     True

1     True

2    False

dtype: bool

df['Match']=s


查看完整回答
反對 回復 2022-12-20
  • 2 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號