답변:
올바르게 이해하면 과제는 다음과 같이 채워 져야합니다.
>>> import numpy as np
>>> import pandas as pd
>>> 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
df
이 비어 있으면 사용하고 싶을 수도 있습니다 df['new'] = pd.Series()
(아래 답변 참조)
DSM의 답변에 추가하고 이와 관련된 질문을 바탕으로 접근 방식을 두 가지 경우로 나누었습니다.
단일 열 추가 : 빈 값을 새 열에 지정하십시오. 예 : df['C'] = np.nan
여러 열 추가 : .reindex(columns=[...])
팬더 방법을 사용 하여 데이터 프레임의 열 인덱스에 새 열을 추가하는 것이 좋습니다 . 또한로 여러 개의 새 행을 추가 할 때도 작동합니다 .reindex(rows=[...])
. 최신 버전의 Pandas (v> 0.20)를 사용하면 or에 axis
명시 적으로 할당하지 않고 키워드 를 지정할 수 있습니다 .columns
rows
다음은 여러 열을 추가하는 예입니다.
mydf = mydf.reindex(columns = mydf.columns.tolist() + ['newcol1','newcol2'])
또는
mydf = mydf.reindex(mydf.columns.tolist() + ['newcol1','newcol2'], axis=1) # version > 0.20.0
항상 새로운 (빈) 데이터 프레임을 기존 데이터 프레임에 연결할 수는 있지만 그것은 나에게 pythonic처럼 느껴지지 않습니다. :)
version >= 0.20.0
들어 DataFrame 을 삭제하고 새 열을 행으로 추가합니다. version < 0.20.0
Pandas Version0.24.1
, axis=1
에서 요구 한대로 작동하지 않았습니다 version = 0.25
. 업데이트 된 버전을 포함하도록 답변을 수정하려고했지만 @kenlukas 및 @il_raffa에 의해 거부되었습니다. 귀하의 답변이 왜 효과가 없는지 이해하기 위해 고군분투하는 모든 사람들이 적어도이 의견을 우연히 발견하기를 바랍니다.
시작 v0.16.0
, DF.assign()
새로운 열 (할당 할 수있는 단일 / 다중 A와를) DF
. 이 열은의 끝에 알파벳 순서로 삽입됩니다 DF
.
이는 반환 된 데이터 프레임에서 직접 일련의 체인 작업을 수행하려는 경우 간단한 할당과 비교하여 유리합니다.
DF
@DSM이 보여주는 동일한 샘플을 고려하십시오 .
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
이렇게하면 새로 생성 된 열과 함께 이전의 모든 열이 포함 된 복사본이 반환됩니다. 이에 따라 원본 DF
을 수정하려면 다음과 같이 사용하십시오 . 현재 작동을 df = df.assign(...)
지원하지 않기 때문 inplace
입니다.
아래 코드는 "기존 데이터 프레임에 n 개의 빈 열을 어떻게 추가합니까?"라는 질문을 해결합니다. 비슷한 문제에 대한 해결책을 한곳에 유지하기 위해 여기에 추가하고 있습니다.
접근법 1 (1-64의 컬럼 이름을 가진 64 개의 추가 컬럼을 작성하기 위해)
m = list(range(1,65,1))
dd=pd.DataFrame(columns=m)
df.join(dd).replace(np.nan,'') #df is the dataframe that already exists
접근 방식 2 (1-64의 열 이름을 가진 64 개의 추가 열을 만들려면)
df.reindex(df.columns.tolist() + list(range(1,65,1)), axis=1).replace(np.nan,'')
넌 할 수있어
df['column'] = None #This works. This will create a new column with None type
df.column = None #This will work only when the column is already present in the dataframe
df.insert(index_to_insert_at, column_header, init_value)
특정 인덱스에 새 열을 삽입 하는 데 사용할 수 있습니다 .
cost_tbl.insert(1, "col_name", "")
위의 문장은 첫 번째 열 뒤에 빈 열을 삽입합니다.
N/A
?