ОБЪЕКТ ПЛАВАТЬ в панде данных - PullRequest
0 голосов
/ 11 марта 2019

У меня есть такой фрейм данных:

df_encoded.head()
Time    Q1  Q2  Q3  Q4  Q5  Q6  Q7  Q8  Q9  ... Q31 Q33 Q36 Q38 Q42 Q44 Q45 Q47 Q49 Q50
0   3746    0   3   56  3   1   7   7   0   4152    ... [1, 5, 9, 10]   [6, 2, 0, 1, 3] [1, 11] 19  0   5   5   [54, 55, 97]    [11, 8, 10] 8
1   3778    1   1   21  3   8   4   7   0   8541    ... 1   11  [10, 0, 13, 1]  [9, 2]  1   [0, 1]  [0, 5]  39  9   [8, 4]
2   4261    1   4   8   1   7   11  0   2   870 ... [1, 5, 9]   3   1   13  3   4   4   91  [18, 19, 5, 2, 1, 0, 7, 19, 5, 3, 7, 17, 6, 4,...   [7, 1]
3   1180    1   0   21  3   7   11  16  0   4103    ... [4, 5, 8, 9]    [2, 0, 1, 5, 10]    [10, 4, 11] [19, 20, 9, 11] [5, 0]  4   [0, 4, 6]   54  [16, 12, 11, 9] 4
4   3823    1   3   19  3   2   17  15  7   3251    ... [5, 8, 9, 10]   [2, 0, 1, 7, 1, 5, 4]   10  13  5   4   [4, 6]  [54, 47, 97, 98]    [19, 5, 2, 1, 0, 7, 12, 11, 8, 10]  [8, 0]

тип данных во всех столбцах объекта. Я могу легко изменить тип с OBJECT на int или float для столбцов, чтобы они не входили в их список. Но, как вы можете видеть через фрейм данных, есть некоторые столбцы, в которых есть список, и я не могу изменить их тип с OBJECT на Float ..... Есть ли какое-то решение для этого?

Наконец, я хочу иметь корреляционную матрицу. но имея объект, я не могу иметь df_encoded.corr () в столбцах с данными типа объекта. Эта корреляционная матрица необходима для составления тепловой карты.

1 Ответ

1 голос
/ 11 марта 2019

Чего вам нужно достичь?

Если вы точно знаете, что решить проблему можно только с помощью строки, содержащей список, и объекты в этом списке должны быть плавающими, тогда вам, вероятно, потребуетсяперебрать каждый ряд.Если у вас огромный набор данных, то есть миллионы строк, вам, возможно, придется переосмыслить то, что вы пытаетесь достичь.

Чтобы просто преобразовать строки, вам нужно будет использовать .apply, который выполняет итерацию по каждой строке.в pandas dataframe и позволяет вам выполнять действия с этой строкой, в этом случае изменяя типы в этой строке.Для быстрого выигрыша можно использовать numpy.array.

import numpy as np

df_encoded['Q31'] = df_encoded.apply(
    lambda x: np.array(x['Q31']).astype(float),
    axis=1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...