본문 바로가기
파이썬

파이썬 Add column with constant value to pandas dataframe

by º기록 2020. 12. 14.
반응형

DataFrame이 주어지면 :

np.random.seed(0)
df = pd.DataFrame(np.random.randn(3, 3), columns=list('ABC'), index=[1, 2, 3])
df

          A         B         C
1  1.764052  0.400157  0.978738
2  2.240893  1.867558 -0.977278
3  0.950088 -0.151357 -0.103219

상수 값 (예 : 0)을 포함하는 새 열을 추가하는 가장 간단한 방법은 무엇입니까?

          A         B         C  new
1  1.764052  0.400157  0.978738    0
2  2.240893  1.867558 -0.977278    0
3  0.950088 -0.151357 -0.103219    0

이것이 내 해결책이지만 이것이 NaN을 '새'열에 넣는 이유를 모르겠습니다.

df['new'] = pd.Series([0 for x in range(len(df.index))])

          A         B         C  new
1  1.764052  0.400157  0.978738  0.0
2  2.240893  1.867558 -0.977278  0.0
3  0.950088 -0.151357 -0.103219  NaN

 

해결 방법

 

이것이 NaN 을 열에 넣는 이유는 오른쪽 개체의 df.index Index 가 다르기 때문입니다. @zach는 0의 새 열을 할당하는 적절한 방법을 보여줍니다. 일반적으로 pandas 는 가능한 한 많은 인덱스 정렬을 시도합니다. 한 가지 단점은 인덱스가 정렬되지 않으면 정렬되지 않는 모든 위치에 NaN 이 표시된다는 것입니다. 재색 인 align 메서드를 사용하여 부분적으로, 전체적으로, 모두 정렬되지 않은 인덱스가있는 개체에 대한 정렬 작업에 대한 직관력을 얻으십시오. 예를 들어, DataFrame.align () 이 부분적으로 정렬 된 인덱스에서 작동하는 방식은 다음과 같습니다.

In [7]: from pandas import DataFrame

In [8]: from numpy.random import randint

In [9]: df = DataFrame({'a': randint(3, size=10)})

In [10]:

In [10]: df
Out[10]:
   a
0  0
1  2
2  0
3  1
4  0
5  0
6  0
7  0
8  0
9  0

In [11]: s = df.a[:5]

In [12]: dfa, sa = df.align(s, axis=0)

In [13]: dfa
Out[13]:
   a
0  0
1  2
2  0
3  1
4  0
5  0
6  0
7  0
8  0
9  0

In [14]: sa
Out[14]:
0     0
1     2
2     0
3     1
4     0
5   NaN
6   NaN
7   NaN
8   NaN
9   NaN
Name: a, dtype: float64

 

참조 페이지 https://stackoverflow.com/questions/24039023

 

 

반응형

댓글