Я пытаюсь сделать что-то подобное, но в гораздо большем dataframe (называется Clean):Подсчет сгруппированных данных с пропущенными значениями в панд dataframe
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')
Это, кажется, работает нормально, но когда я бегу то же самое понятие о даже подмножестве чистого dataframe (заменяющего столбец «LagBin» для «вальса») я получаю сообщение об ошибке:
df1=DataFrame(data=Clean,columns=('rx','LagBin'))
df1=df1.head(n=20)
arrays = [df1.rx,df1.LagBin]
index = pd.MultiIndex.from_arrays(arrays, names = ['rx','LagBin'])
df1.index = index
Hist=df1.groupby(level=('rx','LagBin'))
Hist.count('LagBin')
в частности, Hist.count («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
Что отличает этих наборов данных, который производит эту ошибку?
Ваш ответ правильный, но мне не нравится, что rx и vals заполнены данными counts. Я опубликовал еще один подход, который также хорошо работает, сохраняет исходные значения в rx и LagBin и предоставляет новый столбец со значениями, которые я хочу. – TCS