我正在尝试这样做,但是在更大的数据帧(称为Clean)上:
d={'rx': [1,1,1,1,2.1,2.1,2.1,2.1],
'vals': [NaN,10,10,20,NaN,10,20,20]}
df=DataFrame(d)
arrays = [df.rx,df.vals]
index = pd.MultiIndex.from_arrays(arrays, names = ['rx','vals'])
df.index = index
Hist=df.groupby(level=('rx','vals'))
Hist.count('vals')
这似乎工作得很好,但当我在Clean dataframe的一个子集上运行相同的概念(用列“LagBin”代替“vals”)时,我会得到一个错误:
^{pr2}$具体来说历史计数('LagBin')产生值错误:
ValueError: Cannot convert NA to integer
我看了一下数据结构,一切看起来都是一样的。在
以下是产生错误的数据:
rx LagBin rx LagBin
139.1 nan 139.1
139.1 0 139.1 0
139.1 0 139.1 0
139.1 0 139.1 0
141.1 nan 141.1
141.1 10 141.1 10
141.1 20 141.1 20
193 nan 193
193 50 193 50
193 20 193 20
193 3600 193 3600
193 50 193 50
193 0 193 0
193 20 193 20
193 10 193 10
193 110 193 110
193 80 193 80
193 460 193 460
193 30 193 30
193 0 193 0
而最初的工作程序会产生以下结果:
rx vals rx vals
1 nan 1
1 10 1 10
1 10 1 10
1 20 1 20
2.1 nan 2.1
2.1 10 2.1 10
2.1 20 2.1 20
2.1 20 2.1 20
这些产生此错误的数据集有什么不同?在
这看起来是对的—我一直在修补groupby,并提出了这个解决方案,它看起来更优雅,而且不需要显式地处理na:
这给了我:
^{pr2}$我不想为了以后的生活而更容易的保留价值观。在
如果我没弄错你的问题,我相信你想要的是:
完整的代码实现如下所示:
^{pr2}$其中
df
看起来像:行
Hist.agg(len).dropna()
看起来像:相关问题 更多 >
编程相关推荐