Добавление списка или серии в pandas DataFrame в виде строки?
111
Итак, я инициализировал пустой DataFrame pandas и хотел бы итеративно добавлять списки (или серии) в виде строк в этом DataFrame. Как лучше всего это сделать?
Иногда проще выполнить все добавления за пределами pandas, тогда просто создайте DataFrame за один раз.
>>>import pandas as pd
>>> simple_list=[['a','b']]>>> simple_list.append(['e','f'])>>> df=pd.DataFrame(simple_list,columns=['col1','col2'])
col1 col2
0 a b
1 e f
Вот более простое и глупое решение: `` import pandas as pd df = pd.DataFrame () df = df.append ({'foo': 1, 'bar': 2}, ignore_index = True) # Обратите внимание, что это добавление не бывает на месте. ``
Джайдев Дешпанде
27
Следуя ответу Майка Чирико ... если вы хотите добавить список после того, как фрейм данных уже заполнен ...
>>> list =[['f','g']]>>> df = df.append(pd.DataFrame(list, columns=['col1','col2']),ignore_index=True)>>> df
col1 col2
0 a b
1 d e
2 f g
Если вы хотите добавить серию и использовать индекс серии в качестве столбцов DataFrame, вам нужно только добавить серию в скобки:
In[1]:import pandas as pd
In[2]: df = pd.DataFrame()In[3]: row=pd.Series([1,2,3],["A","B","C"])In[4]: row
Out[4]:
A 1
B 2
C 3
dtype: int64
In[5]: df.append([row],ignore_index=True)Out[5]:
A B C
0123[1 rows x 3 columns]
Без него ignore_index=Trueвы не получите правильный индекс.
Вот функция, которая, учитывая уже созданный фрейм данных, добавит список как новую строку. Вероятно, здесь должны быть добавлены ловушки ошибок, но если вы точно знаете, что добавляете, это не должно быть проблемой.
import pandas as pd
import numpy as np
def addRow(df,ls):"""
Given a dataframe and a list, append the list as a new row to the dataframe.
:param df: <DataFrame> The original dataframe
:param ls: <list> The new row to be added
:return: <DataFrame> The dataframe with the newly appended row
"""
numEl = len(ls)
newRow = pd.DataFrame(np.array(ls).reshape(1,numEl), columns = list(df.columns))
df = df.append(newRow, ignore_index=True)return df
Ответы:
Иногда проще выполнить все добавления за пределами pandas, тогда просто создайте DataFrame за один раз.
источник
источник
df
.Вот простое и глупое решение:
источник
Вы могли бы сделать что-нибудь подобное?
Есть ли у кого-нибудь более изящное решение?
источник
Следуя ответу Майка Чирико ... если вы хотите добавить список после того, как фрейм данных уже заполнен ...
источник
Если вы хотите добавить серию и использовать индекс серии в качестве столбцов DataFrame, вам нужно только добавить серию в скобки:
Без него
ignore_index=True
вы не получите правильный индекс.источник
Вот функция, которая, учитывая уже созданный фрейм данных, добавит список как новую строку. Вероятно, здесь должны быть добавлены ловушки ошибок, но если вы точно знаете, что добавляете, это не должно быть проблемой.
источник
Преобразование списка во фрейм данных в функции добавления работает, также при применении в цикле
источник
просто используйте loc:
источник
Как уже упоминалось здесь - https://kite.com/python/answers/how-to-append-a-list-as-a-row-to-a-pandas-dataframe-in-python , вам нужно сначала преобразуйте список в серию, затем добавьте серию в фрейм данных.
источник
Самый простой способ:
Редактировать:
Не забывайте, что длина нового списка должна быть такой же, как у соответствующего Dataframe.
источник