상수 값으로 데이터 프레임에 열 추가


187

모든 행에 동일한 값을 포함 할 추가 열을 추가 해야하는 기존 데이터 프레임이 있습니다.

기존 df :

Date, Open, High, Low, Close
01-01-2015, 565, 600, 400, 450

새로운 df :

Name, Date, Open, High, Low, Close
abc, 01-01-2015, 565, 600, 400, 450

기존 시리즈 / 데이터 프레임 열을 추가하는 방법을 알고 있습니다. 그러나 이것은 '상황'열을 추가하고 모든 행을 동일한 값으로 설정하는 것이므로이 상황은 다릅니다.이 경우 'abc'입니다.

답변:


295

df['Name']='abc' 새 열을 추가하고 모든 행을 해당 값으로 설정합니다.

In [79]:

df
Out[79]:
         Date, Open, High,  Low,  Close
0  01-01-2015,  565,  600,  400,    450
In [80]:

df['Name'] = 'abc'
df
Out[80]:
         Date, Open, High,  Low,  Close Name
0  01-01-2015,  565,  600,  400,    450  abc

35
다른 방법이 있습니까? 경고를 받고 있습니다. DataFrame의 슬라이스 복사본에 값을 설정하려고합니다. 대신 .loc [row_indexer, col_indexer] = value를 사용하십시오. 문서의 경고를 참조하십시오 : pandas.pydata.org/pandas-docs/stable/…
vishnu viswanath

3
즉, 원본 df가 아닌 사본 인 것을 할당하고 있음을 의미합니다. 질문의 형태로 데이터와 코드를 보지 않으면 더 이상 주석을 달 수 없습니다. 주석으로 질문에 대답하는 것은 비생산적입니다. 이 코드는 작동합니다. 경고를 발생시키기 전에이 작업을 수행했습니다.
EdChum

@vishnuviswanath Jupyter Notebook을 사용할 때와 동일한 경고가 표시됩니다. 사소한 DataFrame 크기 (> 200 레코드)와 특정 할당 조합이 있고 df를 인쇄하면 나에게 발생합니다.
Bill

4
@vishnuviswanath 아마도이 전에 원래 데이터 프레임의 조각을 만든 다음 해당 조각에 새 열을 설정하려고했을 것입니다. 대신 원본 데이터 프레임에 새 열을 추가 한 다음 그 후에 슬라이스를 만듭니다. 데이터 프레임 조각을 만들 때 팬더는 복사본을 만들지 않고 원본 데이터 프레임에서 관리합니다. 이런 종류의 최적화는 혼란스럽고 따라서 경고입니다.
amit_saxena

2
언급 된 팬더 경고를 해결하려면 이것을 사용 .copy()하기 전에을 사용하여 데이터 프레임의 복사본을 얻으십시오 (거대한 지 또는 무언가 또는 성능이 실제로 중요하지 않은 한).
matanster

61

insert새 열 위치를 지정 하는 데 사용할 수 있습니다 . 이 경우 0새 열을 왼쪽에 배치하는 데 사용 합니다.

df.insert(0, 'Name', 'abc')

  Name        Date  Open  High  Low  Close
0  abc  01-01-2015   565   600  400    450

이것은 나를 위해 작동하지 않습니다. 내 원래 행렬은 1460 x 41이며 1 열을 앞에 추가하려고합니다 df.insert(0,'coef_fix',1). JupyterLab을 Python 3.0과 함께 사용하고 있습니다
ColinMac

2
나를 위해 잘 작동합니다. 당신은 그것이 insert작동 한다는 것을 깨닫지 못했을 수도 있습니다 inplace. 이는 새 데이터 프레임의 값이 반환되지 않지만 원래 데이터 프레임이 수정되었음을 의미합니다. 이것을 시도df = pd.DataFrame(0, range(1460), range(41)); df.insert(0, 'coef_fix', 1); df
22 분에 piRSquared

44

단일 라이너 작동

df['Name'] = 'abc'

작성 Name열 및 행에 대한 모든 설정 abc


41

다른 사람들이 제안한 것을 요약하고 세 번째 방법 추가

당신은 할 수 있습니다 :

  • assign (** kwargs) :

    df.assign(Name='abc')
  • 새 컬럼 시리즈에 액세스하여 작성됩니다.

    df['Name'] = 'abc'
  • 삽입 (위치, 열, 값, allow_duplicates = False)

    df.insert(0, 'Name', 'abc')

    인수 loc (0 <= loc <= len (columns))을 사용하면 원하는 열을 삽입 할 수 있습니다.

    'loc'은 삽입 후 열 이있을 인덱스를 제공합니다 . 예를 들어, 위의 코드는 Name 열을 0 번째 열로 삽입합니다. 즉 , 첫 번째 열 앞에 삽입 되어 새 첫 번째 열이됩니다. (인덱싱은 0부터 시작합니다).

이 모든 방법을 사용하면 시리즈에서 새 열을 추가 할 수도 있습니다 (위의 'abc'기본 인수를 시리즈로 대체하십시오).

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