Python 列的条件和
我对蟒蛇和熊猫很陌生,我一直在寻求帮助。我正在使用CSV,并尝试使用pandas根据中间列的值计算每个名称的总数。我想把“GEN”和“NPR”的每个名字的“count”加在一起。这是我的CSV数据集: StartingCSV.csv: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,
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文件中,不要在术语之间加空格。