Панды - добавление строк в DataFrames как элементов в списке, не работает - PullRequest
0 голосов
/ 09 октября 2018

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

mylist=[pd.DataFrame({'a':[5,5],'b':[5,5]}),pd.DataFrame({'a':[6,6],'b':[6,6]})]

и отдельный фрейм данных (df), который я хочу добавить в конец двух фреймов данных в mylist.

df=pd.DataFrame({'a':[9],'b':[9]})

Когда я добавляю циклически по mylist, append работает с элементом списка, но не обновляет и не меняет mylist.

for i in mylist:
    i=i.append(df, ignore_index=True)
    print(i, '\n')
    print(mylist, '\n')

   a  b
0  5  5
1  5  5
2  9  9 

[   a  b
 0  5  5
 1  5  5,
    a  b
 0  6  6
 1  6  6] 

    a  b
 0  6  6
 1  6  6
 2  9  9 

[   a  b
 0  5  5
 1  5  5,
    a  b
 0  6  6
 1  6  6] 

Я пробовал несколько способов обойти это, используя concat и объединяя 'a', и я получаю тот же общий результат - элементы dataframe изменяются внутри цикла, но после завершения цикла ничего не заканчиваетсяизменился.

Когда я пытаюсь внести те же изменения, но без использования цикла, mylist обновляется .

mylist[0]=mylist[0].append(df, ignore_index=True)
print(mylist[0])
print(mylist)

   a  b
0  5  5
1  5  5
2  9  9

[   a  b
 0  5  5
 1  5  5
 2  9  9,
    a  b
 0  6  6
 1  6  6]

Может кто-нибудь объяснить, почему это поведениепроисходит в цикле?Спасибо!

Ответы [ 2 ]

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

В дополнение к append: если вы хотите использовать pd.concat, ваш ввод должен быть последовательностью pandas объектов

for i in range(len(mylist)):
    mylist[i] = pd.concat([mylist[i], df])     # Passing the two dataframes as list, note the []
0 голосов
/ 09 октября 2018

append не является операцией inplace.

Обратитесь к индексам списка и измените позиции

for i in range(len(mylist)):
    mylist[i] = mylist[i].append(df, ignore_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...