Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python库过滤数据_Python_Pandas_Dataframe_Pandas Groupby_Analysis - Fatal编程技术网

使用python库过滤数据

使用python库过滤数据,python,pandas,dataframe,pandas-groupby,analysis,Python,Pandas,Dataframe,Pandas Groupby,Analysis,我在数据框中创建了一个列,该列的值为true或false。现在,我想使用这些真值或假值来分析数据(如中所示,我只关心真值)。我正在尝试编写可以实现这一点的代码: 如果该列的行为true,则从该行的另一列获取数据。 更确切地说,我对数据帧使用了.groupby().count()函数,如果可能的话,我希望继续使用该函数,但只希望使用相应的真值对行进行计数。 我将感谢任何类型的帮助!:) 编辑: 这些评论很有帮助,但它们没有回答我的问题(很抱歉,前面没有举例说明)。 例如,假设这是我的表。我只想在

我在数据框中创建了一个列,该列的值为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提问。我感谢你的帮助!