isk*_*lue 3 python lambda subset dataframe pandas
我有一个 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
Run Code Online (Sandbox Code Playgroud)
该函数检查输入字符串的长度是否为 3 并返回 True 或 False:
def is_valid(x):
assert isinstance(x, str)
return True if len(x) == 3 else False
Run Code Online (Sandbox Code Playgroud)
我的目标是df对该函数返回 True 的位置进行子集化,这将返回输出
name age
0 foo 10
2 baz 14
Run Code Online (Sandbox Code Playgroud)
以下语法返回错误;如果输出满足条件(在本例中 = True),则将函数应用于列(系列)的值并对数据帧进行子集化的正确语法是什么?
df[is_valid(df['name'])]
Run Code Online (Sandbox Code Playgroud)
尝试:
df[df['name'].str.len()==3]
Run Code Online (Sandbox Code Playgroud)
或者使用您的代码apply:
df[df['name'].apply(is_valid)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |