我有一个DataFrame
对象,我正在按一些键分组并计算结果。问题是我想用DataFrame列的索引之一替换计数之间的关系。
df.groupby(['A','B', 'C'])['C'].count().apply(f).reset_index()
我正在寻找一个f
和C
的每个值用#timesC==1 / #timesC==0
的值替换列A
的{{1}}。
答案 0 :(得分:1)
这是您想要的吗?
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'A':[1,2,3,1,2,3],
'B':[2,0,1,2,0,1],
'C':[1,1,0,1,1,1]
})
print(df)
def f(x):
if np.count_nonzero(x==0)==0:
return np.nan
else:
return np.count_nonzero(x==1)/np.count_nonzero(x==0)
result = df.groupby(['A','B'])['C'].apply(f).reset_index()
print(result)
结果:
#df
A B C
0 1 2 1
1 2 0 1
2 3 1 0
3 1 2 1
4 2 0 1
5 3 1 1
#result
A B C
0 1 2 NaN
1 2 0 NaN
2 3 1 1.0