【问题标题】:Filtering data using python Pandas liberary使用 python Pandas 库过滤数据
【发布时间】:2020-11-06 18:21:26
【问题描述】:

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

编辑: cmets 很有帮助,但他们没有回答我的问题(抱歉前面没有例子)。 Data example

例如,假设这是我的桌子。如果 Single == True,我只想计算这个人。我将如何更改 .groupby().count() 方法来做到这一点?

【问题讨论】:

  • 欢迎来到 SO!您将(可能)需要为这个问题添加更多细节以获得答案。 Please see here;你应该尝试包含一些代码来显示你的数据和你想要做什么。
  • 您的用户名和您的问题具有讽刺意味:) 无论如何,如果您不提供带有输入和预期输出的最小可重现示例(没有图像!),您的问题可能不会得到回答:@ 987654323@

标签: python pandas dataframe pandas-groupby analysis


【解决方案1】:

就像 cmets 所说,您应该添加一些简单的示例数据并说明您期望的结果是什么样的。由于你没有在OP中提供任何数据,我做了一些。

以下是查看这些城市有多少人养猫的几种方法。您可以看到制作可在您的问题中使用的数据是多么容易。这里应用的 groupby 按城市分组并计算真假。

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() 

下面的另一种方法。如果该列设置为布尔值,则真/假被视为 1/0,您可以使用 sum。这里应用的 groupby 按城市分组并计算 Trues。

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

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

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

【讨论】:

  • 对不起,这是我第一次使用stackoverflow提问。感谢您的帮助!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2019-06-10
    • 2021-12-10
    • 2018-09-29
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多