簡體   English   中英

對於Pandas數據框中的每一行,確定另一列中是否存在一列值

[英]For every row in Pandas dataframe determine if a column value exists in another column

我有一個這樣的熊貓數據框:

df = pd.DataFrame({'category' : ['A', 'B', 'C', 'A'], 'category_pred' : [['A'], ['B','D'], ['A','B','C'], ['D']]})
print(df)

  category category_pred
0        A           [A]
1        B        [B, D]
2        C     [A, B, C]
3        A           [D]

我想要這樣的輸出:

  category category_pred  count
0        A           [A]      1
1        B        [B, D]      1
2        C     [A, B, C]      1
3        A           [D]      0

也就是說,對於每一行,確定“ category”中的值是否出現在“ category_pred”中。 請注意,“ category_pred”可以包含多個值。

我可以像這樣做一個for循環,但這確實很慢。

for i in df.index:
    if df.category[i] in df.category_pred[i]:
        df['count'][i] = 1

我正在尋找一種有效的方法來執行此操作。 謝謝!

您可以使用DataFrame的apply方法。

df['count'] = df.apply(lambda x: 1 if x.category in x.category_pred else 0, axis = 1)

這將根據需要添加新列

暫無
暫無

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

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