首页 > 解决方案 > Python:使用应用函数时,熊猫数据框列没有变化

问题描述

作为一个可重现的示例,我创建了以下数据框:

dictionary = {'Metropolitan area': ['New York City','New York City','Los Angeles', 'Los Angeles'],
              'Population (2016 est.)[8]': [20153634, 20153634, 13310447, 13310447],
              'NBA':['Knicks',' ',' ', 'Clippers']}

df = pd.DataFrame(dictionary)

用“无”替换存在的任何空间,df['NBA']我创建了以下函数:

def transform(x):
if len(x)<2:
    return None
else:
    return x

我申请了df['NBA']using.apply方法:

df['NBA'].apply(transform)

这样做之后,我得到以下输出,这似乎是成功的:

> 0           Knicks
1    Missing Value
2    Missing Value
3         Clippers
Name: NBA, dtype: object

但是,这里的问题是,当我调用 时dfdf['NBA']并没有改变,我从一开始就得到了该列,并且空格仍然存在并且没有被 None 替换:

    Metropolitan area   Population (2016 est.)[8]   NBA
0   New York City            20153634              Knicks
1   New York City            20153634   
2   Los Angeles              13310447   
3   Los Angeles              13310447              Clippers

我究竟做错了什么?我误解了.apply方法吗?

标签: pythonpandasapply

解决方案


将返回的结果分配apply给列。

df['NBA'] = df['NBA'].apply(transform)

推荐阅读