【问题标题】:create a new dataframe from selecting specific rows from existing dataframe python通过从现有数据框 python 中选择特定行来创建一个新的数据框
【发布时间】:2017-04-14 14:18:50
【问题描述】:

我的 pandas 数据框中有一个表格。 df

id count price
1    2     100
2    7      25
3    3     720
4    7     221
5    8     212
6    2     200

我想从中创建一个新的数据框(df2),选择计数为 2 且价格为 100 且计数为 7 且价格为 221 的行

我的输出应该是 df2 =

id count price
1    2     100
4    7     221

我正在尝试使用df[df['count'] == '2' & df['price'] == '100']

但出现错误

TypeError: cannot compare a dtyped [object] array with a scalar of type [bool]

【问题讨论】:

  • 经典之作:df[(df['count'] == '2') & (df['price'] == '100')].

标签: python pandas


【解决方案1】:

您需要添加(),因为& 的优先级高于==

df3 = df[(df['count'] == '2') & (df['price'] == '100')]
print (df3)
  id count price
0  1     2   100

如果需要检查多个值,请使用isin:

df4 = df[(df['count'].isin(['2','7'])) & (df['price'].isin(['100', '221']))]
print (df4)
  id count price
0  1     2   100
3  4     7   221

但如果检查数字,请使用:

df3 = df[(df['count'] == 2) & (df['price'] == 100)]
print (df3)

df4 = df[(df['count'].isin([2,7])) & (df['price'].isin([100, 221]))]
print (df4)

【讨论】:

  • 但是我如何在 1 df 中加入两个结果?我正在考虑为我想要的两行创建两个不同的数据框,然后附加它们?还有其他方法吗?
  • 你认为分配给df3还是df4
猜你喜欢
  • 1970-01-01
  • 2021-07-01
  • 2021-12-09
  • 1970-01-01
  • 2021-09-08
  • 2019-08-14
  • 2016-10-14
  • 2023-01-30
相关资源
最近更新 更多