[英]Subset pandas dataframe using function applied to a column/series
我有一個 pandas dataframe df
,我想根據通過某個 function Name
is_valid()
import pandas as pd
data = [['foo', 10], ['baar', 15], ['baz', 14]]
df = pd.DataFrame(data, columns = ['name', 'age'])
df
name age
0 foo 10
1 baar 15
2 baz 14
function 檢查輸入字符串的長度是否為 3 並返回 True 或 False:
def is_valid(x):
assert isinstance(x, str)
return True if len(x) == 3 else False
我的目標是將df
子集,其中 function 返回 True,這將返回 output
name age
0 foo 10
2 baz 14
以下語法返回錯誤; 如果 output 滿足條件,則將 function 應用於列(系列)的值並將 dataframe 子集的正確語法是什么= True?
df[is_valid(df['name'])]
嘗試:
df[df['name'].str.len()==3]
或將您的代碼與apply
一起使用:
df[df['name'].apply(is_valid)]
使用Series.str.len
和Series.eq
作為掩碼:
df = df[df['name'].str.len().eq(3)]
或使用Series.apply
自定義 function:
df = df[df['name'].apply(is_valid)]
print (df)
name age
0 foo 10
2 baz 14
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.