首页 > 解决方案 > python pandas,使用groupby()时要注意什么

问题描述

我有一个 .tsv 文件imdb_actor_edges.tsv,总共包括 287074 行。我想弄清楚每个演员在文件中出现了多少次,所以这是我的代码(使用 python pandas):

import pandas as pd

edges = pd.read_csv('imdb_actor_edges.tsv', sep='\t')

edges.loc[:,'edges'] = 1;

df1 = edges[['actor1','edges']]  
df2 = edges[['actor2','edges']]
df1.columns = ['actor','edges']  
df2.columns = ['actor','edges']

edges_sorted = pd.concat([df1,df2],join='inner',ignore_index=True)
edges_sorted.reset_index(inplace=True,drop=True)

edges_sorted.groupby('actor')['edges'].sum()

问题是 edges_sorted 应该小于 287074*2 行(因为有些演员展示了不止一次)但实际上不是。它仍然是 287074*2 行,并且“边”仍然是 1。

我做错什么了吗?我该如何解决这个问题?

标签: pythonpandas

解决方案


请试试这个: -

import pandas as pd

edges = pd.read_csv('imdb_actor_edges.tsv', sep='\t')

edges.loc[:,'edges'] = 1;
df1 = edges[['actor1','edges']]  
df2 = edges[['actor2','edges']]
df1.columns = ['actor','edges']  
df2.columns = ['actor','edges']

edges_sorted = pd.concat([df1,df2],join='inner',ignore_index=True)
edges_sorted.reset_index(inplace=True,drop=True)

result = edges_sorted.groupby('actor').agg(sum)
result.reset_index(inplace=True)
result

希望这可以帮助!!


推荐阅读