如何处理DataFrame的输出?

时间:2019-02-15 12:26:18

标签: python pandas pandas-groupby

我有一个DataFrame对象,我正在按一些键分组并计算结果。问题是我想用DataFrame列的索引之一替换计数之间的关系。

df.groupby(['A','B', 'C'])['C'].count().apply(f).reset_index()

我正在寻找一个fC的每个值用#timesC==1 / #timesC==0的值替换列A的{​​{1}}。

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