Присвойте значения циклам for столбцам DataFrame панд. - PullRequest
0 голосов
/ 03 марта 2019

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

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

df = pd.DataFrame(columns=['a', 'b', 'c'], index=range(100))
num = [100,200,300]
df['a'] = num[0]
df['b'] = num[1]
df['c'] = num[2]

df.head()
     a    b    c
0  100  200  300
1  100  200  300
2  100  200  300
3  100  200  300
4  100  200  300

Мой дляцикл выглядит следующим образом:

df = pd.DataFrame(columns=['a', 'b', 'c'], index=range(100))
for s in strings:
    for n in num:
        df[s] = n

df.head()

     a    b    c
0  300  300  300
1  300  300  300
2  300  300  300
3  300  300  300
4  300  300  300

Может ли кто-нибудь помочь мне написать цикл for, который работает как мой ручной код?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Упрощен список пропусков для конструктора DataFrame, тогда цикл не нужен:

df = pd.DataFrame([[100,200,300]], columns=['a', 'b', 'c'], index=range(100))
print (df.head())
     a    b    c
0  100  200  300
1  100  200  300
2  100  200  300
3  100  200  300
4  100  200  300

Но если нужно, нужно решение для цикла:

df = pd.DataFrame(columns=['a', 'b', 'c'], index=range(100))
num = [100,200,300]
cols = ['a','b','c']

for c, val in zip(cols, num):
    df[c] = val
print (df.head())
     a    b    c
0  100  200  300
1  100  200  300
2  100  200  300
3  100  200  300
4  100  200  300
0 голосов
/ 03 марта 2019

Если у вас уже есть существующий DataFrame, используйте assign:

df.assign(**dict(zip(df, num)))

Вам не нужно изменять все столбцы, если вам не нужно!

df = pd.DataFrame(columns=['a', 'b', 'c', 'd', 'e'], index=range(100))
df.assign(**dict(zip(['a', 'c', 'e'], num))).head()

     a    b    c    d    e
0  100  NaN  200  NaN  300
1  100  NaN  200  NaN  300
2  100  NaN  200  NaN  300
3  100  NaN  200  NaN  300
4  100  NaN  200  NaN  300
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...