Панды запись типа списка? - PullRequest
       2

Панды запись типа списка?

0 голосов
/ 28 августа 2018

Может ли столбец в пандах иметь тип np.array? или список питонов и т.д? Я пытаюсь получить

    a         array_col
0   100       [1,2,8,0]
1   5         [1,3 4,8]      
2   3         [1,2 4,8]     

Все столбцы будут одинаковой длины, если это уместно. Функциональность, которая мне нужна, состоит в том, чтобы инициализировать весь array_col как [0,0, ... 0], а затем для каждой строки манипулировать массивом в зависимости от строки и предыдущего массива (e.g on row n, multiply all the array by n, and make array_col[n] = 0)
Альтернатива состоит в том, чтобы создать новый столбец для каждого индекса (т. Е. 30 новых столбцов в моем случае и сделать манипуляцию намного медленнее).
Идеи?
Edit:
Я хотел бы что-то вроде этого:

df

    a         
0   100       
1   5               
2   3 

df['hist'] = [1,2,3]


df

    a         array_col
0   100       [1,2,3]
1   5         [1,2,3]      
2   3         [1,2,3]

Но оба

df['hist'] = [1,2,3]

и

df['hist'] = np.zeros(3)

выдает ошибку

ValueError: Length of values does not match length of index

1 Ответ

0 голосов
/ 28 августа 2018

Ваш пример может быть решен так:

df['hist'] = [[1, 2, 3] for _ in range(df.size)]
df
#     a       hist
#0  100  [1, 2, 3]
#1    5  [1, 2, 3]
#2    3  [1, 2, 3]

Или:

df['hist'] = [np.zeros(3) for _ in range(df.size)]
df
#     a             hist
#0  100  [0.0, 0.0, 0.0]
#1    5  [0.0, 0.0, 0.0]
#2    3  [0.0, 0.0, 0.0]

И чтобы получить желаемый вывод - назначить вложенный список:

df['hist'] = [[1,2,8,0],[1,3,4,8],[1,2,4,8]]
df
#     a          hist
#0  100  [1, 2, 8, 0]
#1    5  [1, 3, 4, 8]
#2    3  [1, 2, 4, 8]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...