簡體   English   中英

從其他數據框中選擇具有特定條件的行

[英]Select rows with specific condition from other dataframe

我有具有一列的數據框df

colors
red
blue
green
black
pink

另一個具有許多列(〜300列)的數據幀df1

colorName col1 col2 ... colN
pink 1 0 1 ... 0
white 0 1 1 ... 1
blue 1 0 0 ... 0
yellow 0 0 0 ... 0

我需要返回的是df1.colorName存在的df行,並且在任何列(col1 ... colN)中至少具有值1

因此,從上面來看; 輸出應為:

blue
pink

我從這個開始,但是我確定它需要一個附加條件(檢查任何列(col1 ... colN)中的值至少為1)

newDF = df[df.colors.isin(df1.colorName) && ]

如果我錯了,請糾正我,我們將不勝感激。

使用boolean indexing通過選擇列DataFrame.iloc -所有列,而不先用DataFrame.any至少一個True每行和DataFrame.loccolorName第一,並通過它傳遞給過濾Series.isin

c = df1.loc[df1.iloc[:, 1:].any(axis=1), 'colorName']
#alternative
#c = df1.loc[df1.drop('colorName', axis=1).any(axis=1), 'colorName']
newDF = df[df. colors.isin(c)]
print (newDF)
  colors
1   blue
4   pink

詳細說明

print (c)
0     pink
1    white
2     blue
Name: colorName, dtype: object

暫無
暫無

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

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