[英]How to randomly select rows from Pandas dataframe based on a specific condition?
[英]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.loc
列colorName
第一,並通過它傳遞給過濾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.