Как преобразовать список парных кортежей в датафрейме в столбцы - PullRequest
0 голосов
/ 26 октября 2018

У меня есть столбец данных, в котором данные каждой ячейки выглядят следующим образом:

[('a', '2000'),('b', '4000'),('d', '5000')].

У некоторых будет 4 пары с символом c.Как я могу преобразовать их все в новые столбцы, заполнив df['a'] , df['b'] , df['c'] , df['d']?

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Еще один способ сделать это:

l = [('a', '2000'),('b', '4000'),('d', '5000')]
df = pd.DataFrame([dict(l)])

Если ваши данные похожи на вложенный список кортежей, попробуйте так:

df = pd.DataFrame(list(map(dict, l)))

Вывод будет таким:

      a     b     d
0  2000  4000  5000
0 голосов
/ 26 октября 2018

Это не векторизовано. Одним из эффективных решений было бы предоставление списка словарей конструктору pd.DataFrame через list + map с dict:

s = pd.Series([[('a', '2000'),('b', '4000'),('d', '5000')],
               [('a', '1000'),('b', '3000'),('c', '6000'),('d', '7000')]])

# example dataframe
df = pd.DataFrame(s, columns=['data'])

# convert list of tuples to dict for each element in series
res = pd.DataFrame(list(map(dict, df['data'])))

print(res)

      a     b     c     d
0  2000  4000   NaN  5000
1  1000  3000  6000  7000
0 голосов
/ 26 октября 2018
import pandas as pd 
d=[('a', '2000'),('b', '4000'),('d', '5000')]  
df = pd.DataFrame(data=d).T   
df.columns = df.iloc[0]    
df = df.iloc[1:]    

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...