판다 데이터 프레임에 상수 값을 가진 열 추가
주어진 데이터 프레임:
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
초단순 인플레이스 할당:df['new'] = 0
내부 수정의 경우 직접 할당을 수행합니다.이 과제는 각 행에 대해 판다가 방송합니다.
df = pd.DataFrame('x', index=range(4), columns=list('ABC'))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
df['new'] = 'y'
# Same as,
# df.loc[:, 'new'] = 'y'
df
A B C new
0 x x x y
1 x x x y
2 x x x y
3 x x x y
개체 열에 대한 참고 사항
빈 목록 열을 추가하려면 다음과 같이 하십시오.
- 이렇게 하지 않는 것을 고려합니다.
object
열은 성능 측면에서 좋지 않은 소식입니다.데이터 구조를 다시 생각해 보십시오. - 데이터를 희소 데이터 구조에 저장하는 것을 고려해 보십시오.추가 정보: 희소 데이터 구조
목록 열을 저장해야 하는 경우 동일한 참조를 여러 번 복사하지 마십시오.
# Wrong df['new'] = [[]] * len(df) # Right df['new'] = [[] for _ in range(len(df))]
복사본 생성:df.assign(new=0)
복사본이 필요한 경우 다음을 사용합니다.
df.assign(new='y')
A B C new
0 x x x y
1 x x x y
2 x x x y
3 x x x y
같은 값을 가진 열을 여러 개 할당해야 하는 경우 다음과 같이 간단합니다.
c = ['new1', 'new2', ...]
df.assign(**dict.fromkeys(c, 'y'))
A B C new1 new2
0 x x x y y
1 x x x y y
2 x x x y y
3 x x x y y
다중 열 할당
마지막으로 여러 열을 다른 값으로 할당해야 하는 경우 다음을 사용할 수 있습니다.assign
사전을 첨부하여
c = {'new1': 'w', 'new2': 'y', 'new3': 'z'}
df.assign(**c)
A B C new1 new2 new3
0 x x x w y z
1 x x x w y z
2 x x x w y z
3 x x x w y z
현대의 판다를 사용하면 다음과 같은 일을 할 수 있습니다.
df['new'] = 0
이것이 넣는 이유는NaN
한 칸에 들어가는 이유는df.index
그리고Index
당신의 오른쪽 물체는 다릅니다.@vmdk는 새 0 열을 할당하는 올바른 방법을 보여줍니다.일반적으로,pandas
인덱스 정렬을 최대한 많이 수행하려고 합니다.한 가지 단점은 인덱스가 정렬되어 있지 않으면 다음과 같은 결과를 얻을 수 있다는 것입니다.NaN
그들이 정렬되지 않은 곳이라면 어디든.게임을 즐기십시오.reindex
그리고.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
람다를 사용하는 또 다른 라이너가 있습니다(정수 값 = 10으로 열 생성).
df['newCol'] = df.apply(lambda x: 10, axis=1)
전에
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
끝나고
df
A B C newCol
1 1.764052 0.400157 0.978738 10
2 2.240893 1.867558 -0.977278 10
3 0.950088 -0.151357 -0.103219 10
언급URL : https://stackoverflow.com/questions/24039023/add-column-with-constant-value-to-pandas-dataframe
'programing' 카테고리의 다른 글
mysql 외래 키를 사용하여 한 테이블에서 다른 테이블로 데이터 복사 (0) | 2023.07.09 |
---|---|
각 루프에 대한 SQL Server (0) | 2023.07.09 |
워드프레스 비밀번호 재설정 후크 (0) | 2023.07.09 |
R을 다시 시작하지 않고 패키지를 언로드하는 방법 (0) | 2023.07.09 |
PLSQL - 사용자의 모든 데이터베이스 개체 삭제 (0) | 2023.07.09 |