Как создать дополнительные столбцы в кадре данных Pandas внутри цикла for - PullRequest
0 голосов
/ 14 февраля 2019

Я работаю с пандами и хотел бы добавить столбцы к моему фрейму данных из списка.В идеале я хотел бы перебирать свой список в цикле for, создавая один столбец за каждый проход.

Пример:

import pandas as pd

d = {
'name':['Ken','Bobby'],
'age':[5,6],
'score':[1,2]}

df = pd.DataFrame(d,columns=['name','age','score'])

new_columns = ['col1', 'col2']

Вывод:

    name    age     score
    Ken     5       1
    Bobby   6       2

Желаемый вывод:

    name    age     score   col1     col2
    Ken     5       1       1        1
    Bobby   6       2       2        2

Исправленное решение:

for i in new_columns:
     df[i] = pd.Series([1,2])

Редактировать:

Я исправил код, чтобы исправить опечатку, однако есть отличное дополнительное решение, которое не используется для циклов, которые я собираюсь использовать в будущем.

1 Ответ

0 голосов
/ 14 февраля 2019

Один из способов сделать это без цикла for, assign

df=df.assign(**dict.fromkeys(new_columns,[1,2]))
df
Out[84]: 
    name  age  score  col1  col2
0    Ken    5      1     1     1
1  Bobby    6      2     2     2

Также вам не нужно Series при создании новых столбцов

for i in new_columns:
     df[i] = [1,2]

df
Out[86]: 
    name  age  score  col1  col2
0    Ken    5      1     1     1
1  Bobby    6      2     2     2

Примечание, Лично не рекомендуется использовать Series для назначения, так как pandas чувствителен к индексу, что означает, что, если ваш индекс данных не находится в диапазоне от 0 до n, назначение завершится неудачно.Например

df.index=[100,101]
for i in new_columns:
     df[i] = pd.Series([1,2])

df
Out[89]: 
      name  age  score  col1  col2
100    Ken    5      1   NaN   NaN
101  Bobby    6      2   NaN   NaN
...