【问题标题】:I'm trying to clean my data but it returns the wrong column我正在尝试清理我的数据,但它返回了错误的列
【发布时间】:2020-04-26 00:42:21
【问题描述】:

我正在尝试提取我导入的数据集df19 并从中清除信息以创建第二个变量noneu19,您猜对了,欧盟国家/地区已从Destination 列中删除

这是我跑的

noneu19=df19
noneu19["Destination"] = noneu19[~noneu19["Destination"].apply(str).str.contains('UK')]
noneu19["Destination"] = noneu19[~noneu19["Destination"].apply(str).str.contains('SWEDEN')]
noneu19["Destination"] = noneu19[~noneu19["Destination"].apply(str).str.contains('SPAIN')]
...
set(noneu19["Destination"])

(...替换了其他 25 行)

由于某种原因,它返回的是在一个完全独立的列'Location' 中索引的数据列表。

如果我执行set(df19['Destination']),它会返回我要清理的列表,因此在原始数据集中它不是问题。有没有一种方法可以让它更容易/更清洁/更好,或者有一种方法可以解决它返回错误列的原因?

谢谢

【问题讨论】:

    标签: python-3.x dataframe indexing multiple-columns data-cleaning


    【解决方案1】:

    您可以创建一个list,其中包含欧盟的所有国家/地区,例如

    EU = ['SPAIN', 'ITALY'..., 'EU_COUNTRY']
    

    然后像这样使用isin函数:

    noneu19 = df19.loc[~df19["Destination"].isin(EU)].copy()
    

    函数isin 将检查该列的元素是否包含在您作为参数传递的list 中。

    以这种方式处理问题,您将拥有更易读且易于维护的代码。

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 2010-11-09
      • 2022-11-19
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多