извлечение указанных значений из столбца данных pandas - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть данные в столбце данных панд, как показано ниже:

[2, 4]
[3, 4]
[1, 4]
[0, 0] 

Я хочу, чтобы данные были в форме

col_1  col_2
2      4
3      4
1      4
0      0

Может кто-нибудь помочь мне, как я могу получить данные в вышеуказанной форме.

Ответы [ 3 ]

0 голосов
/ 29 апреля 2018

ALollz дал лучший ответ, но, учитывая заголовок о извлечении определенных значений, вот более прямой и иллюстративный (но менее эффективный) метод:

import pandas as pd

df = pd.DataFrame()
df["cur"] = [[2,4],[3,4],[1,4],[0,0]]
print(df) # This is what you have

# You can access elements by df[<column>][<row>][<list index>]
# This is looping across all rows of the "cur" column, and pulling out
#    the values at the 0th and 1st index.
df["col_1"] = [pair[0] for pair in df["cur"]]
df["col_2"] = [pair[1] for pair in df["cur"]]
print(df)

выход

      cur
0  [2, 4]
1  [3, 4]
2  [1, 4]
3  [0, 0]
      cur  col1  col2
0  [2, 4]     2     4
1  [3, 4]     3     4
2  [1, 4]     1     4
3  [0, 0]     0     0
0 голосов
/ 30 апреля 2018

Другой способ - использовать apply и pd.Series:

df = pd.DataFrame({'val1': [[2, 4], [3, 4], [1, 4], [0, 0]]})   

df['val1'].apply(pd.Series).rename(columns=lambda x: x + 1).add_prefix('col_')

Выход:

   col_1  col_2
0      2      4
1      3      4
2      1      4
3      0      0

Или аналог @ALollz, но более надежный для захвата любого количества столбцов.

pd.DataFrame(df['val1'].tolist())\
  .rename(columns=lambda x: x + 1)\
  .add_prefix('col_')
0 голосов
/ 29 апреля 2018

Вы можете использовать .tolist(), чтобы сделать это довольно легко, если все списки имеют одинаковое количество элементов

import pandas as pd   
df = pd.DataFrame({'val1': [[2, 4], [3, 4], [1, 4], [0, 0]]})   

df[['col_1', 'col_2']] = pd.DataFrame(df.val1.tolist())
     val1  col_1  col_2
0  [2, 4]      2      4
1  [3, 4]      3      4
2  [1, 4]      1      4
3  [0, 0]      0      0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...