Python sum和groupby不适合我使用pandas
我有以下数据集: 我想使用pandas按Python sum和groupby不适合我使用pandas,python,pandas,csv,Python,Pandas,Csv,我有以下数据集: 我想使用pandas按nombre(名称)对列cantidad(金额)分组求和,因此我尝试了: 第一行很惊讶,因为“Ana”是一个常见的名称,所以我检查了: 好吧,那么。。。“Ana”的总数是434而不是1。发生了什么事?我做错了什么?您需要skipinitialspace=True因为列nombre中的值后面有空格,所以'Ana','Ana','Ana'。。。是单独分组的: historical_names = pd.read_csv('nombres-1920-192
nombre
(名称)对列cantidad
(金额)分组求和,因此我尝试了:
第一行很惊讶,因为“Ana”是一个常见的名称,所以我检查了:
好吧,那么。。。“Ana”的总数是434而不是1。发生了什么事?我做错了什么?您需要
skipinitialspace=True
因为列nombre
中的值后面有空格,所以'Ana'
,'Ana'
,'Ana'
。。。是单独分组的:
historical_names = pd.read_csv('nombres-1920-1924.csv', skipinitialspace =True)
print (historical_names.head())
resume = historical_names.groupby('nombre')['cantidad'].sum()
print (resume['Ana'])
437
a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad']
print (a)
5 113
10340 138
18776 1
23114 183
26523 2
Name: cantidad, dtype: int64
a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad'].sum()
print (a)
437
真有趣。什么返回
resume=historical_names.groupby('nombre')['cantidad'].sum()
?@jezrael,感谢您的关注。结果是一样的。你可以从@JohnGalt下载数据集,我将在回家后添加。我已经检查了数据类型,像往常一样快速地得到object(nombre)、np.int64(cantidad)和np.int64(anio)我想出了历史名称。nombre=historical\u names.nombre.apply(lambda x:x.strip())
你有什么见解可以分享一下这个apply
和.str.strip()
的性能差异吗?@Uvar-处理NaN
s-str.strip()
handleNaN
s,但是应用(lambda x:x.strip())
不适用。
historical_names = pd.read_csv('nombres-1920-1924.csv')
print (historical_names.head())
historical_names['nombre'] = historical_names['nombre'].str.strip()
resume = historical_names.groupby('nombre')['cantidad'].sum()
print (resume['Ana'])
437
historical_names = pd.read_csv('nombres-1920-1924.csv')
print (historical_names.head())
resume = historical_names.groupby('nombre')['cantidad'].sum()
print (resume['Ana'])
434
a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad']
print (a)
5 113
10340 138
23114 183
Name: cantidad, dtype: int64
a = historical_names.loc[historical_names['nombre'] == 'Ana', 'cantidad'].sum()
print (a)
434