我想使用for循环遍历pandas数据框的列,以基于给定的列表对值进行计数。
My_list =[ 'apple', 'orange', 'grapes' ]
我可以使用value_count()
以下给出的函数来计算频率
df['Fruits']. value_count()
但我想使用for循环进行计算以遍历数据帧以获取给定列表的计数和平均值。
My_list =[ 'apple', 'orange', 'grapes' ]
Df:
Fruits value
apple 10
apple 20
orange 2
grapes 5
grapes 10
grapes 3
我的输出应该是这样的。
Fruits count average
apple 2 15
orange 1 2
grapes 3 6
使用:
query
或过滤boolean indexing
groupby
和聚合size
和mean
dictionary
reset_index
My_list = ['apple', 'orange', 'grapes']
df1 = (df.query("Fruits in @My_list")
.groupby('Fruits', sort=False)['value']
.agg(['size','mean'])
.rename(columns={'mean':'average', 'size':'count'})
.reset_index())
df1 = (df[df['Fruits'].isin(My_list)]
.groupby('Fruits', sort=False)['value']
.agg(['size','mean'])
.rename(columns={'mean':'average', 'size':'count'})
.reset_index())
print (df1)
Fruits count average
0 apple 2 15
1 orange 1 2
2 grapes 3 6
如果要使用循环,它应该更慢:
L = []
for x in My_list:
s = df.loc[df['Fruits'] == x, 'value']
#print (s)
L.append({'Fruits': x, 'average':s.mean(), 'count':len(s)})
df = pd.DataFrame(L, columns=['Fruits','count','average'])
print (df)
Fruits count average
0 apple 2 15.0
1 orange 1 2.0
2 grapes 3 6.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句