簡體   English   中英

子集 pandas dataframe 使用 function 應用於列/系列

[英]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.lenSeries.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.

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