Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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_Sum - Fatal编程技术网

Python 列的条件和

Python 列的条件和,python,pandas,sum,Python,Pandas,Sum,我对蟒蛇和熊猫很陌生,我一直在寻求帮助。我正在使用CSV,并尝试使用pandas根据中间列的值计算每个名称的总数。我想把“GEN”和“NPR”的每个名字的“count”加在一起。这是我的CSV数据集: StartingCSV.csv: Name, Specialty, Count Smith, GEN, 1 Smith, INT, 2 Smith, NPR, 5 Smith, PSC, 4 Zane, GEN, 3 Zane, PSC, 4 Zane, NPR, 4 Charles, NPR,

我对蟒蛇和熊猫很陌生,我一直在寻求帮助。我正在使用CSV,并尝试使用pandas根据中间列的值计算每个名称的总数。我想把“GEN”和“NPR”的每个名字的“count”加在一起。这是我的CSV数据集:

StartingCSV.csv:

Name, Specialty, Count
Smith, GEN, 1
Smith, INT, 2
Smith, NPR, 5
Smith, PSC, 4
Zane, GEN, 3
Zane, PSC, 4
Zane, NPR, 4
Charles, NPR, 4
Charles, AUD, 4
期望输出:

Smith: 6
Zane: 7
Charles: 4
这就是我到目前为止所做的:

import csv
import pandas as pd
df = pd.read_csv("StartingCSV.csv")
newdf = df.groupby("Name")
newdf.apply(lambda x: x[x['Specialty'] == 'NPR']['Count'].sum())
这是我得到的输出:

Smith: 5
Zane: 4
Charles: 4
这将返回每个名称的NPR数,但我无法找到将NPR值添加到每个名称的GEN值的方法,以创建上面列出的所需输出。尝试在最后一行中的“NPR”之后添加“or”会返回如下错误:

newdf.apply(lambda x: x[x['Specialty'] == 'NPR' or 'GEN']['Count'].sum())

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
感谢您的帮助!(很抱歉,如果我偏离了基准或者这还不清楚)

你可以这样做

df[df['speciality'].isin(['NPR','GEN'])].groupby('Name').sum().reset_index()

使用
df[df['speciality'].isin(['NPR','GEN'])]
我们只得到数据帧中在“speciality”列中值为'NPR'或'GEN'的行。之后是通常的
groupby
sum

输出

Name    Count
Charles   4
Smith     6
Zane      7
你可以这样做

df[df['speciality'].isin(['NPR','GEN'])].groupby('Name').sum().reset_index()

使用
df[df['speciality'].isin(['NPR','GEN'])]
我们只得到数据帧中在“speciality”列中值为'NPR'或'GEN'的行。之后是通常的
groupby
sum

输出

Name    Count
Charles   4
Smith     6
Zane      7

您对Zane的期望结果与您的数据不匹配。你应该得到7分,而不是4分。并且不要在CSV文件中的术语之间加空格。您对Zane的期望结果与您的数据不匹配。你应该得到7分,而不是4分。在CSV文件中,不要在术语之间加空格。