【发布时间】:2015-10-10 04:53:32
【问题描述】:
我有一个大数据框。我想选择适用于 Machine1 和 NorthAmerica 的数据。所以如果 Machine1 和 NorthAmerica 在一行数据中,我想保留该行。
我知道如何满足一个要求:
df = df[df['MachineNumber'].isin(['Machine1'])]
完美运行并切分我需要的所有数据。但是,我不知道如何为两件事做到这一点。
我尝试了两次,分别像这样:
df = df[df['MachineNumber'].isin(['Machine1'])]
df = df[df['Region'].isin(['NorthAmerica'])]
我也试过了
df = df[(df['Region']=='NorthAmerica') & (df['MachineNumber']=='Machine1')]
但两次尝试都会抛出错误TypeError: unsupported type for add operation,并且它返回一个只有列名的空数据框。我也在网上查看了解决方案,但他们专注于第二种解决方案,但使用的是数字而不是字符串。我怎样才能正确地做到这一点?
一个示例数据框输入是一个名为sortingdata.csv的csv,它有两列:
Region MachineNumber
EU Machine1
EU Machine1
EU Machine1
EU Machine1
EU Machine1
EU Machine1
EU Machine1
EU Machine1
EU Machine2
NA Machine2
NA Machine2
NA Machine2
NA Machine2
EMEA Machine2
NA Machine2
NA Machine2
NA Machine1
NA Machine1
NA Machine1
NA Machine1
NA Machine1
NA Machine1
NA Machine1
NA Machine1
NA Machine1
代码是
import pandas as pd
df = pd.read_csv('sortingdata.csv')
df = df[(df['Region']=='NorthAmerica') & (df['MachineNumber']=='Machine1')]
它运行良好,但在这种情况下打印和空 DataFrame。
【问题讨论】:
-
你能上传一个样本数据文件来重现错误吗?
df = df[(df['Region']=='NorthAmerica') & (df['MachineNumber']=='Machine1')]在我看来是合理的。 -
@JohnE 这不是什么问题,因为我只想用 Machine1 处理 NorthAmerica 的数据 df,所以我可以覆盖它。
-
@JianxunLi 我添加了示例数据,您可以将行复制粘贴到 csv 文件中。它返回一个空数据框
-
jenryb & @JianxunLi -- 我发布了一个关于 NaN 问题的后续问题:stackoverflow.com/questions/31528621/…
-
@JohnE ,我对代码有进一步的问题,但它略有不同,所以我提出了一个新问题。如果您有兴趣,请点击这里:stackoverflow.com/questions/31543959/…
标签: python pandas dataframe typeerror