使用python库过滤数据
我在数据框中创建了一个列,该列的值为true或false。现在,我想使用这些真值或假值来分析数据(如中所示,我只关心真值)。我正在尝试编写可以实现这一点的代码: 如果该列的行为true,则从该行的另一列获取数据。 更确切地说,我对数据帧使用了.groupby().count()函数,如果可能的话,我希望继续使用该函数,但只希望使用相应的真值对行进行计数。 我将感谢任何类型的帮助!:) 编辑: 这些评论很有帮助,但它们没有回答我的问题(很抱歉,前面没有举例说明)。使用python库过滤数据,python,pandas,dataframe,pandas-groupby,analysis,Python,Pandas,Dataframe,Pandas Groupby,Analysis,我在数据框中创建了一个列,该列的值为true或false。现在,我想使用这些真值或假值来分析数据(如中所示,我只关心真值)。我正在尝试编写可以实现这一点的代码: 如果该列的行为true,则从该行的另一列获取数据。 更确切地说,我对数据帧使用了.groupby().count()函数,如果可能的话,我希望继续使用该函数,但只希望使用相应的真值对行进行计数。 我将感谢任何类型的帮助!:) 编辑: 这些评论很有帮助,但它们没有回答我的问题(很抱歉,前面没有举例说明)。 例如,假设这是我的表。我只想在
例如,假设这是我的表。我只想在Single==True时计算这个人。如何更改.groupby().count()方法来执行此操作?您可以使用列True False值来选择行:
data = {'flag': [True, True, False, True], 'value': [1, 2, 3, 4]}
df = pd.DataFrame(data)
df[df['flag']]
正如评论所说,您应该添加一些简单的示例数据,并说明您预期的结果。因为你没有在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()
下面是另一种方法。如果该列设置为布尔值,则true/false将被视为1/0,您可以使用sum。此处应用的groupby按城市分组并计算真实值
df.groupby('city')['myboolean'].sum().astype(int)
如果要将为真的行提取到新的数据帧中:
mysubset = df.loc[df['myboolean'] == True]
display(mysubset)
欢迎来到SO!你(可能)需要在这个问题上添加更多细节才能得到答案;你应该尝试包含一些代码来显示你的数据和你想做什么。用户名和问题的讽刺之处:)无论如何,如果你没有提供一个输入和预期输出(没有图像!)的最小可复制示例,你的问题可能不会得到回答:对不起,这是我第一次使用stackoverflow提问。我感谢你的帮助!