2013-05-01 7 views
100

팬더 DataFrame 개체에 빈 열을 추가하는 가장 쉬운 방법은 무엇입니까? 나는 우연히 마주 쳤습니다.데이터 프레임에 빈 열을 추가하는 방법은 무엇입니까?

df['foo'] = df.apply(lambda _: '', axis=1) 

덜 비뚤어진 방법이 있습니까? 만약 내가 제대로 이해하고

+0

이 실제로 빈 문자열 또는 오히려'N/A'를 포함하는 열을 원하십니까? – filmor

답변

153

, 할당 작성해야합니다 :

>>> df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]}) 
>>> df 
    A B 
0 1 2 
1 2 3 
2 3 4 
>>> df["C"] = "" 
>>> df["D"] = np.nan 
>>> df 
    A B C D 
0 1 2 NaN 
1 2 3 NaN 
2 3 4 NaN 
+7

IIUC가 무엇인지 설명해 주시겠습니까? – lmiguelvargasf

+8

@lmiguelvargasf '내가 올바르게 이해하면'짧습니다. – einonm

16

this associated question에 DSM의 대답 건물에 추가하려면, 나는 두 가지 경우로 접근을 나눌 것 :

  • 하나 추가 column : 새 열에 빈 값을 지정하면됩니다. df['C'] = np.nan

  • 여러 열을 추가 : 나는이 .reindex(columns=[...])method of pandas가 dataframe의 열 인덱스에 새 열을 추가하기 위해 사용하는 것이 좋습니다 것입니다. 이것은 또한 여러 개의 새로운 행을 추가 할 때도 적용됩니다. 여기

는 여러 열을 추가하는 예입니다

mydf = mydf.reindex(mydf.columns.tolist() + ['newcol1','newcol2']) # version >= 0.20.0 

또는

mydf = mydf.reindex(columns = mydf.columns.tolist() + ['newcol1','newcol2']) # version < 0.20.0 

또한 항상 기존 dataframe에 새로운 (빈) dataframe를 연결할 수 있습니다,하지만 그 '아무튼 내게 파이썬으로 느끼지 마라 :)

5

로 시작하는 v0.16.0로 시작하여 DF.assign()DF에 새 열 (단일/복수)을 할당하는 데 사용할 수 있습니다. 이 열은 DF 끝에 알파벳순으로 삽입됩니다.

이렇게하면 반환 된 데이터 프레임에서 일련의 연속 작업을 직접 수행하려는 경우에 단순 할당에 비해 유리합니다. 이 새로 만든 것들과 함께 이전의 모든 열이있는 사본을 반환

df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]}) 
df 
Out[18]: 
    A B 
0 1 2 
1 2 3 
2 3 4 

df.assign(C="",D=np.nan) 
Out[21]: 
    A B C D 
0 1 2 NaN 
1 2 3 NaN 
2 3 4 NaN 

참고 :

은 @DSM에 의해 입증 같은 DF 샘플을 고려하십시오. 원래 DF을 수정하려면 다음과 같이 사용하십시오 : df = df.assign(...) 현재 inplace 작동을 지원하지 않으므로 사용하십시오.

+0

C의 해당 데이터 형식은 무엇입니까? 문자열 목록을 반복하여 추가하려고합니다. 그러나 그것을 사용하지는 않습니다. – eleijonmarck

2

@ emunsing의 answer은 여러 열을 추가하는 데 정말 멋지지만 파이썬 2.7에서는 제대로 작동하지 않습니다. 대신에, 나는이 작품을 발견 :

mydf = mydf.reindex(columns = np.append(mydf.columns.values, ['newcol1','newcol2']) 
9

을 더 간단한 솔루션입니다 :

"header_list는"당신이 표시 할 헤더의 목록입니다
df = df.reindex(columns = header_list)     

.

이미 데이터 프레임에없는 목록에 포함 된 헤더는 아래의 빈 셀과 함께 추가됩니다.

그럼 C와 D가 빈 셀과 열로 추가됩니다

header_list = ['a','b','c', 'd'] 

경우

+0

보다 정확하게, 열은 NaN으로 추가됩니다. – broccoli2000

관련 문제