python - 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。
我做错什么了吗?我该如何解决这个问题?
解决方案
请试试这个: -
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
希望这可以帮助!!
推荐阅读
- matrix - 在 Lisp 中的另一个矩阵中放置一个矩阵
- python - 处理字典列表中的重复项
- flutter - Dart Uri Api - 请求通过将 HTML 代码提供给问号来更改链接
- docker - 如何从 docker 容器(在服务器 1 中运行)连接数据库(服务器 2 中的 mongodb)
- javascript - 使用 GSAP 进行 CSS 和 JS 转换
- x86 - 我怎么知道我在某处有堆栈段错误?
- python - 计算包含某些字母的单词
- android - 在android中发送重复通知
- spring-boot - Spring Boot Cloud AutoConfiguration 类中未加载自定义 Bean
- jquery - 在第三方 javascript 库中使用 jQuery 变量