【发布时间】:2021-05-26 09:33:07
【问题描述】:
我只是想获取给定列中值的行数,例如:
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() 显示它使用“职业”作为我的列名。
【问题讨论】:
-
更多相同: KeyError: ('Occupation', 'data') 我需要两个括号还是一个,两种方法都试过了......我们在 .group by 之前指定了什么?为什么不只是 df.groupby....?
-
让我们试试
df[['Occupation', 'data']].groupby(['Occupation']).agg(['count'])基本原理是,我们正在调用列列表并将它们分组。 df[['data']] 产生一个系列并丢失列占用。因此,如果您知道我的意思,您正在对不存在的列应用计数 -
尝试运行
df[['Occupation', 'data']]与df[['data']]。一个是数据框,另一个是系列或单列 -
KeyError: "[Index(['Occupation', 'data'], dtype='object')] 都不在 [columns] 中"
-
从下面的 Anurag Dabas 获得解决方案。