使用 python Pandas 库过滤数据

Filtering data using python Pandas liberary

我在我的 Dataframe 中创建了一个列,其中包含 true 或 false 值。现在我想使用这些 true 或 false 值来分析数据(例如,我只关心 true 值)。我正在尝试编写可以执行此操作的代码: 如果该列的行为真,则从该行的另一列获取数据。 更准确地说,我对数据框使用了 .groupby().count() 函数,如果可能的话,我想继续使用它,但只想计算具有相应真实值的行。 我将不胜感激任何类型的帮助! :)

编辑: 这些评论很有帮助,但他们没有回答我的问题(抱歉之前缺少示例)。 Data example

例如,假设这是我的 table。如果 Single == True,我只想计算这个人。我将如何更改 .groupby().count() 方法来执行此操作?

您可以使用列 True False 值来 select 行:

data = {'flag': [True, True, False, True], 'value': [1, 2, 3, 4]}  
df = pd.DataFrame(data)
df[df['flag']]

如评论所说,您应该添加一些简单的样本数据并说明您期望的结果。由于您没有在 OP 中提供任何数据,所以我做了一些。

这里有几种方法可以查看这些城市中有多少人养猫。您可以看到编写可在您的问题中使用的数据是多么容易。这里应用的 groupby 按城市分组并统计 True & False。

import pandas as pd

### Make up data
colA = [1, 2, 3, 4]
colB = ['yes', 'no', 'yes', 'yes']
colC = ['Paris', 'London', 'London', 'Atlanta']
df = pd.DataFrame(list(zip(colA, colB, colC)), 
                  columns =['person_id', 'has_cat', 'city']) 
df['myboolean'] = df['has_cat']
df.replace({'myboolean': {'yes': True, 'no': False}}, inplace=True)
df['myboolean'] = df['myboolean'].astype('bool')
display(df)

df.groupby('city')['myboolean'].value_counts() 

另一种方法如下。如果该列设置为布尔值,则 true/false 将被视为 1/0,您可以使用求和。这里应用的groupby按城市分组并统计Trues。

df.groupby('city')['myboolean'].sum().astype(int)

如果您想将为 True 的行提取到新的数据框中:

mysubset = df.loc[df['myboolean'] == True]
display(mysubset)