목록에서 데이터 프레임에 열 추가
다음과 같은 열이 있는 데이터 프레임이 있습니다.
A B C
0
4
5
6
7
7
6
5
A에서 가능한 값의 범위는 0 ~ 7입니다.
또한 다음과 같은 8가지 요소의 목록이 있습니다.
List=[2,5,6,8,12,16,26,32] //There are only 8 elements in this list
A열의 요소가 n이면 목록의 n번째 요소를 새 열에 삽입해야 합니다(예: 'D').
전체 데이터 프레임을 루프하지 않고 한 번에 수행할 수 있는 방법은 무엇입니까?
결과 데이터 프레임은 다음과 같습니다.
A B C D
0 2
4 12
5 16
6 26
7 32
7 32
6 26
5 16
참고: 데이터 프레임은 방대하며 반복이 마지막 옵션입니다.그러나 필요한 경우 dict와 같은 다른 데이터 구조의 'List' 요소도 정렬할 수 있습니다.
목록을 직접 할당하기만 하면 됩니다.
df['new_col'] = mylist
대안
목록을 시리즈 또는 배열로 변환한 다음 다음을 할당합니다.
se = pd.Series(mylist)
df['new_col'] = se.values
또는
df['new_col'] = np.array(mylist)
IIUC, 만약 당신이 (불행히도 이름이 붙여졌다)를 만든다면.List
의 상태로.ndarray
자연스럽게 색인화할 수 있습니다.
>>> import numpy as np
>>> m = np.arange(16)*10
>>> m[df.A]
array([ 0, 40, 50, 60, 150, 150, 140, 130])
>>> df["D"] = m[df.A]
>>> df
A B C D
0 0 NaN NaN 0
1 4 NaN NaN 40
2 5 NaN NaN 50
3 6 NaN NaN 60
4 15 NaN NaN 150
5 15 NaN NaN 150
6 14 NaN NaN 140
7 13 NaN NaN 130
여기서 나는 새로운 것을 지었습니다.m
하지만 만약 당신이 사용한다면.m = np.asarray(List)
동일한 것이 작동해야 합니다: 의 값.df.A
의 적절한 요소를 선택할 것입니다.m
.
이전 버전을 사용하는 경우numpy
사용해야 할 수도 있습니다.m[df.A.values]
대신에... 과거에는numpy
다른 사람들과 잘 놀지 못했고, 일부는 리팩터링했습니다.pandas
두통을 일으켰습니다.지금은 상황이 나아졌습니다.
@sparrow의 훌륭한 솔루션을 개선하는 솔루션.
데이터 프레임에 추가할 값이 포함된 목록을 데이터 세트로 지정합니다.
새 열을 단순히 new_column으로 부르고 싶다고 가정합니다.
먼저 목록을 시리즈로 만듭니다.
column_values = pd.Series(mylist)
그런 다음 삽입 함수를 사용하여 열을 추가합니다.이 기능을 사용하면 열을 배치할 위치를 선택할 수 있습니다.다음 예제에서는 새 열을 왼쪽에서 첫 번째 위치에 배치합니다(loc=0 설정).
df.insert(loc=0, column='new_column', value=column_values)
오래된 질문입니다. 하지만 저는 항상 가장 빠른 코드를 사용하려고 노력합니다!
저는 6,900만 unt64의 거대한 목록을 가지고 있었습니다. np.array()가 저에게 가장 빨랐습니다.
df['hashes'] = hashes
Time spent: 17.034842014312744
df['hashes'] = pd.Series(hashes).values
Time spent: 17.141014337539673
df['key'] = np.array(hashes)
Time spent: 10.724546194076538
먼저 당신이 가지고 있던 데이터 프레임을 생성해 보겠습니다, 열 B와 C는 관련이 없기 때문에 무시하겠습니다.
df = pd.DataFrame({'A': [0, 4, 5, 6, 7, 7, 6,5]})
그리고 당신이 원하는 매핑:
mapping = dict(enumerate([2,5,6,8,12,16,26,32]))
df['D'] = df['A'].map(mapping)
알았어!
print df
출력:
A D
0 0 2
1 4 12
2 5 16
3 6 26
4 7 32
5 7 32
6 6 26
7 5 16
다음을 사용할 수도 있습니다.
In [1559]: df
Out[1559]:
A B C
0 0 NaN NaN
1 4 NaN NaN
2 5 NaN NaN
3 6 NaN NaN
4 7 NaN NaN
5 7 NaN NaN
6 6 NaN NaN
7 5 NaN NaN
In [1560]: mylist = [2,5,6,8,12,16,26,32]
In [1567]: df = df.assign(D=mylist)
In [1568]: df
Out[1568]:
A B C D
0 0 NaN NaN 2
1 4 NaN NaN 5
2 5 NaN NaN 6
3 6 NaN NaN 8
4 7 NaN NaN 12
5 7 NaN NaN 16
6 6 NaN NaN 26
7 5 NaN NaN 32
언급URL : https://stackoverflow.com/questions/26666919/add-column-in-dataframe-from-list
'source' 카테고리의 다른 글
vba에서 xll addin 함수를 어떻게 호출합니까? (0) | 2023.06.08 |
---|---|
ViewPager에서 손가락으로 스와이프하여 페이징을 비활성화하면서 프로그래밍 방식으로 스와이프할 수 있는 방법은 무엇입니까? (0) | 2023.06.08 |
Web.Config 디버그/릴리스 (0) | 2023.06.08 |
VBA 메서드 'range of object' _ 코드를 실행할 때 워크시트가 갑자기 나타나지 않았습니까? (0) | 2023.06.08 |
기본 앱이 아직 구성되지 않았습니다. (0) | 2023.06.08 |