Сумма столбцов данных в другом столбце данных Python дает NaN - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу суммировать строки и столбцы информационного кадра (pdf и wdf) и сохранять результаты в другом столбце информационного кадра (to_hex). Я попробовал это для одного кадра данных, и это сработало. Это не работает для другого (это дает NaN). Я не могу понять, в чем разница.

to_hex = pd.DataFrame(0, index=np.arange(len(sasiedztwo)), columns=['ID','podroze','p_rozmyte'])
to_hex.loc[:,'ID']= wdf.index+1
to_hex.index=pdf.index
to_hex.loc[:,'podroze']= pd.DataFrame(pdf.sum(axis=0))[:]
to_hex.index=wdf.index
to_hex.loc[:,'p_rozmyte']= pd.DataFrame(wdf.sum(axis=0))[:]

Вот как выглядит pdf фрейм данных:

   0  1   2  3  4  5  6  7     8
0  0  0  10  0  0  0  0  0   100
1  0  0   0  0  0  0  0  0     0
2  0  0   0  0  0  0  0  0     0
3  0  0   0  0  0  0  0  0     0
4  0  0   0  0  0  0  0  0     0
5  0  0   0  0  0  0  0  0     0
6  0  0   0  0  0  0  0  0     0
7  0  0   0  0  0  0  0  0  1000
8  0  0   0  0  0  0  0  0     0

Это wdf:

    0    1      2    3      4      5      6      7       8
0  2.5  5.0   35.0  0.0   27.5   55.0   25.0   50.0   102.5
1  0.0  0.0    5.0  0.0    0.0    0.0    0.0    0.0   300.0
2  0.0  0.0    2.5  0.0    0.0    0.0    0.0    0.0    25.0
3  0.0  0.0    5.0  0.0    0.0    0.0    0.0    0.0   300.0
4  0.0  0.0    2.5  0.0    0.0    0.0    0.0    0.0   525.0
5  0.0  0.0    0.0  0.0    0.0    0.0    0.0    0.0   250.0
6  0.0  0.0    2.5  0.0    0.0    0.0    0.0    0.0   525.0
7  0.0  0.0  250.0  0.0  250.0  500.0  250.0  500.0  1000.0
8  0.0  0.0    0.0  0.0    0.0    0.0    0.0    0.0   500.0

И это результат в to_hex:

  ID  podroze  p_rozmyte
0   1        0        NaN
1   2        0        NaN
2   3       10        NaN
3   4        0        NaN
4   5        0        NaN
5   6        0        NaN
6   7        0        NaN
7   8        0        NaN
8   9     1100        NaN

1 Ответ

0 голосов
/ 20 апреля 2020

РЕШЕНИЕ:
Один из способов решить эту проблему - изменить код следующим образом:

to_hex.loc[:,'ID']= wdf.index+1
# to_hex.index=pdf.index                   # no need
to_hex.loc[:,'podroze']= pdf.sum(axis=0)   # modified; directly use the series output from SUM()
# to_hex.index=wdf.index                   # no need
to_hex.loc[:,'p_rozmyte']= wdf.sum(axis=0) # modified

Тогда вы получите:

    ID  podroze p_rozmyte
0   1   0        2.5
1   2   0        5.0
2   3   10       302.5
3   4   0        0.0
4   5   0        277.5
5   6   0        555.0
6   7   0        275.0
7   8   0        550.0
8   9   1100     3527.5

I Подумайте, причина, по которой вы получаете NaN для одного случая, а правильные значения для другого, кроется в to_hex.dtypes:

ID           int64
podroze      int64
p_rozmyte    int64
dtype: object

И, как вы видите, to_hex тип данных имеет тип столбца int64. Это нормально, когда вы добавляете pdf фрейм данных (поскольку он имеет тот же тип d)

pd.DataFrame(pdf.sum(axis=0))[:].dtypes
0    int64
dtype: object

, но не работает при добавлении wdf:

pd.DataFrame(wdf.sum(axis=0))[:].dtypes
0    float64
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...