【发布时间】:2021-05-26 23:16:46
【问题描述】:
我得到了我想要的计数,但我不明白为什么要为每个数据列创建单独的计数。如何只创建一个名为“count”的列?仅当列为 Null (NAN) 值时,计数是否会有所不同?
另外,下面的实际列名是什么?列名是元组吗?
我可以更改 groupby/agg 以仅返回一个名为“Count”的列吗?
CSV 数据:
'Occupation','col1','col2'
'Carpenter','data1','x'
'Carpenter','data2','y'
'Carpenter','data3','z'
'Painter','data1','x'
'Painter','data2','y'
'Programmer','data1','z'
'Programmer','data2','x'
'Programmer','data3','y'
'Programmer','data4','z'
计划:
filename = "./data/TestGroup.csv"
df = pd.read_csv(filename)
print(df.head())
print("Computing stats by HandRank... ")
df_stats = df.groupby("'Occupation'").agg(['count'])
print(df_stats.head())
print("----- Columns-----")
for col_name in df_stats.columns:
print(col_name)
输出:
Computing stats by HandRank...
'col1' 'col2'
count count
'Occupation'
'Carpenter' 3 3
'Painter' 2 2
'Programmer' 4 4
----- Columns-----
("'col1'", 'count')
("'col2'", 'count')
df.head() 显示它使用“职业”作为我的列名。
【问题讨论】:
-
应该包括nans吗?您在寻找
df_stats = df.groupby("'Occupation'").size().reset_index(name='Count')吗? count 默认不计算NaN -
df['Occupation'].value_counts().to_frame(name='count'). -
@QuangHoang - 你为什么不把它作为答案而不是评论?我更喜欢它,因为它不会在结果 df_stats 中留下列名。我不得不更改为: df_stats = df["'Occupation'"].value_counts().to_frame(name='count') (它使用 CSV 中的引号,因此字段名包含引号)。