使用应用于 column/series 的函数子集 pandas 数据框
Subset pandas dataframe using function applied to a column/series
我有一个 pandas 数据帧 df
,我想根据 运行 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
该函数检查输入字符串的长度是否为 3 并且 returns 为 True 或 False:
def is_valid(x):
assert isinstance(x, str)
return True if len(x) == 3 else False
我的目标是子集 df
,其中此函数 return 为 True,这将 return
的输出
name age
0 foo 10
2 baz 14
以下语法return是一个错误;如果输出满足条件(在本例中 = True),将函数应用于列(系列)的值并子集数据帧的正确语法是什么?
df[is_valid(df['name'])]
尝试:
df[df['name'].str.len()==3]
或者将您的代码与 apply
一起使用:
df[df['name'].apply(is_valid)]
掩码使用Series.str.len
with Series.eq
:
df = df[df['name'].str.len().eq(3)]
或使用Series.apply
传递自定义函数:
df = df[df['name'].apply(is_valid)]
print (df)
name age
0 foo 10
2 baz 14
我有一个 pandas 数据帧 df
,我想根据 运行 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
该函数检查输入字符串的长度是否为 3 并且 returns 为 True 或 False:
def is_valid(x):
assert isinstance(x, str)
return True if len(x) == 3 else False
我的目标是子集 df
,其中此函数 return 为 True,这将 return
name age
0 foo 10
2 baz 14
以下语法return是一个错误;如果输出满足条件(在本例中 = True),将函数应用于列(系列)的值并子集数据帧的正确语法是什么?
df[is_valid(df['name'])]
尝试:
df[df['name'].str.len()==3]
或者将您的代码与 apply
一起使用:
df[df['name'].apply(is_valid)]
掩码使用Series.str.len
with Series.eq
:
df = df[df['name'].str.len().eq(3)]
或使用Series.apply
传递自定义函数:
df = df[df['name'].apply(is_valid)]
print (df)
name age
0 foo 10
2 baz 14