pandas - 简单的 Pandas DataFrame read_csv 然后 GroupBy 与 Count / KeyError
问题描述
我只是想获取给定列中值的行数,例如:
CSV 数据:
'Occupation','data'
'Carpenter','data1'
'Carpenter','data2'
'Carpenter','data3'
'Painter','data1'
'Painter','data2'
'Programmer','data1'
'Programmer','data2'
'Programmer','data3'
'Programmer','data4'
程序:
filename = "./data/TestGroup.csv"
df = pd.read_csv(filename)
print(df.head())
print("Computing stats by HandRank... ")
df_stats = df[['data']].groupby(['Occupation']).agg(['count'])
# also tried: df_stats = df[['Occupation']].groupby(['Occupation']).agg(['count'])
print(df_stats.head())
如何获取变量中的计数?.groupby 和 .agg 返回另一个数据框吗?
输出/错误:
'Occupation' 'data'
0 'Carpenter' 'data1'
1 'Carpenter' 'data2'
2 'Carpenter' 'data3'
3 'Painter' 'data1'
4 'Painter' 'data2'
Computing stats by HandRank...
Traceback (most recent call last):
File "C:\Apps\PokerHandGenerator_Copy_not_Source\Server\TestPandasGroupBy.py", line 17, in <module>
df_stats = df.groupby(['Occupation']).agg(['count'])
File "C:\Apps\ProcessData\venv\lib\site-packages\pandas\core\frame.py", line 6714, in groupby
return DataFrameGroupBy(
File "C:\Apps\ProcessData\venv\lib\site-packages\pandas\core\groupby\groupby.py", line 560, in __init__
grouper, exclusions, obj = get_grouper(
File "C:\Apps\ProcessData\venv\lib\site-packages\pandas\core\groupby\grouper.py", line 811, in get_grouper
raise KeyError(gpr)
KeyError: 'Occupation'
df.head() 显示它使用“职业”作为我的列名。
解决方案
Pandas 将第一列视为“职业”而不是职业。
用这个:-
df_stats = df.groupby("'Occupation'").agg(['count'])
而不是使用这个: -
df_stats = df[['data']].groupby(['Occupation']).agg(['count'])
推荐阅读
- c# - 创建网格选定单元格范围的字符串
- java - 清除文件内容而不删除
- c# - 在 EF Core 的集合中包含每个项目的属性
- mysql - 选择不同的值多列
- javascript - 如何将 WaterfallDialogs 实现到多个应用程序 LUIS 机器人中?
- assembly - 引导时间段寄存器值变化
- cypher - 检测节点之间不必要的显式关系
- google-apps-script - GAS:发送消息时触发 onFormSubmit 问题(但它们位于“已发送”文件夹中)
- html - chrome vs IE11中的iframe onload
- sapui5 - 更改 ID 时 Smarttable 停止获取数据