목록이나 시리즈를 Pandas DataFrame에 행으로 추가 하시겠습니까?


답변:


133

때때로 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

1
질문은 모든 행이 미리 알려진 것은 아니라는 것을 암시하는 것 같습니다.
DISC-O

103
df = pd.DataFrame(columns=list("ABC"))
df.loc[len(df)] = [1,2,3]

8
끝에 추가하려는 경우 가장 쉬운 방법 df입니다.
Sid

2
이것이 바로 제가 원했던 것입니다. 간단하면서도 효과적입니다!
MSalty

3
이것이 선택된 답변이 아닌 이유는 무엇입니까?
Lucas Azevedo

이것은 일반적으로 괜찮습니다하지만 당신은 0에서 시작하는 일정하게 증가하는 인덱스가있는 경우에만 작동합니다
dreab

59

다음은 간단하고 멍청한 솔루션입니다.

>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df = df.append({'foo':1, 'bar':2}, ignore_index=True)

25
이것은 목록이 아니라 사전을 추가하는 것입니다
anthnyprschka

36

이런 식으로 할 수 있습니까?

>>> import pandas as pd
>>> df = pd.DataFrame(columns=['col1', 'col2'])
>>> df = df.append(pd.Series(['a', 'b'], index=['col1','col2']), ignore_index=True)
>>> df = df.append(pd.Series(['d', 'e'], index=['col1','col2']), ignore_index=True) 
>>> df
  col1 col2
0    a    b
1    d    e

누구보다 우아한 솔루션이 있습니까?


1
다음은 더 간단하고 멍청한 해결책입니다.```import pandas as pd df = pd.DataFrame () df = df.append ({ 'foo': 1, 'bar': 2}, ignore_index = True) #이 추가 제자리에서 일어나지 않습니다. ```
Jaidev Deshpande 2014 년

27

Mike Chirico의 대답에 따라 ... 데이터 프레임이 이미 채워진 후에 목록을 추가 하려면 ...

>>> 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

복사본을 생성합니까? 제자리에 추가 할 수 있습니까?
lucid_dreamer

4

Series를 추가하고 Series의 인덱스를 DataFrame의 열로 사용하려면 대괄호 사이에 Series를 추가하기 만하면됩니다.

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
0  1  2  3

[1 rows x 3 columns]

그러나 ignore_index=True당신은 적절한 색인을 얻지 못합니다.


4

다음은 이미 생성 된 데이터 프레임이 주어지면 목록을 새 행으로 추가하는 함수입니다. 여기에는 오류 캐처가 포함되어있을 수 있지만 추가하는 내용을 정확히 알고 있다면 문제가되지 않습니다.

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

3

추가 기능 내에서 목록을 데이터 프레임으로 변환하는 것은 루프에 적용될 때도 작동합니다.

import pandas as pd
mylist = [1,2,3]
df = pd.DataFrame()
df = df.append(pd.DataFrame(data[mylist]))

2

간단히 loc 사용 :

>>> df
     A  B  C
one  1  2  3
>>> df.loc["two"] = [4,5,6]
>>> df
     A  B  C
one  1  2  3
two  4  5  6


0

가장 간단한 방법 :

my_list = [1,2,3,4,5]
df['new_column'] = pd.Series(my_list).values

편집하다:

새 목록의 길이는 해당 Dataframe과 같아야한다는 것을 잊지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.