[python] 여러 목록을 데이터 프레임으로 가져 오기
파이썬 데이터 프레임에서 여러 목록을 가져 와서 다른 열로 어떻게 배치합니까? 이 솔루션을 시도했지만 문제가 발생했습니다.
시도 1 :
- 세 개의 목록이 있고 함께 압축하여 사용하십시오.
res = zip(lst1,lst2,lst3)
- 단 하나의 열만 나타냅니다
시도 2 :
percentile_list = pd.DataFrame({'lst1Tite' : [lst1],
'lst2Tite' : [lst2],
'lst3Tite' : [lst3] },
columns=['lst1Tite','lst1Tite', 'lst1Tite'])
- 하나의 행을 3 열 (위의 방법)로 생성하거나 전치하면 3 행과 1 열입니다
3 열 (3 개의 목록) 팬더 데이터 프레임으로 100 개의 행 (각 독립 목록의 길이)을 얻으려면 어떻게합니까?
답변
나는 거의 거기에 있다고 생각합니다.의 주위에 여분의 대괄호를 제거하십시오 lst
(또한 dict에서 데이터 프레임을 만들 때 열 이름을 지정할 필요가 없습니다).
import pandas as pd
lst1 = range(100)
lst2 = range(100)
lst3 = range(100)
percentile_list = pd.DataFrame(
{'lst1Title': lst1,
'lst2Title': lst2,
'lst3Title': lst3
})
percentile_list
lst1Title lst2Title lst3Title
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
...
첫 번째 시도에서 np.column_stack
보다 성능이 뛰어난 솔루션이 필요한 경우 zip
여기 예제에서 약 2 배의 속도 향상이 가능하지만 내 의견으로는 약간의 가독성이 있습니다.
import numpy as np
percentile_list = pd.DataFrame(np.column_stack([lst1, lst2, lst3]),
columns=['lst1Title', 'lst2Title', 'lst3Title'])
답변
Aditya Guru 의 답변을 여기에 추가 하십시오. 지도를 사용할 필요가 없습니다. 다음과 같이 간단하게 수행 할 수 있습니다.
pd.DataFrame(list(zip(lst1, lst2, lst3)))
열 이름을 0,1,2로 설정합니다. 자신의 열 이름을 설정하려면 columns
위의 방법으로 키워드 인수 를 전달하면 됩니다.
pd.DataFrame(list(zip(lst1, lst2, lst3)),
columns=['lst1_title','lst2_title', 'lst3_title'])
답변
첫 번째 접근 방식을 사용하여 추가하면됩니다.
pd.DataFrame(list(map(list, zip(lst1,lst2,lst3))))
답변
하나 이상의 확장 가능한 솔루션 추가
lists = [lst1, lst2, lst3, lst4]
df = pd.concat([pd.Series(x) for x in lists], axis=1)
답변
위의 답변에 추가하여 즉시 만들 수 있습니다.
df= pd.DataFrame()
list1 = list(range(10))
list2 = list(range(10,20))
df['list1'] = list1
df['list2'] = list2
print(df)
그것이 도움이되기를 바랍니다!
답변
@oopsi가 사용 pd.concat()
되었지만 열 이름은 포함되지 않았습니다. 수락 된 답변의 첫 번째 솔루션과 달리 열 순서를 제어 할 수있는 다음을 수행 할 수 있습니다 (정렬되지 않은 dicts는 피하십시오).
import pandas as pd
lst1 = range(100)
lst2 = range(100)
lst3 = range(100)
s1=pd.Series(lst1,name='lst1Title')
s2=pd.Series(lst2,name='lst2Title')
s3=pd.Series(lst3 ,name='lst3Title')
percentile_list = pd.concat([s1,s2,s3], axis=1)
percentile_list
Out[2]:
lst1Title lst2Title lst3Title
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
...
답변
여러 목록에서 데이터 프레임을 만드는 방법에는 여러 가지가 있습니다.
list1=[1,2,3,4]
list2=[5,6,7,8]
list3=[9,10,11,12]
-
pd.DataFrame({'list1':list1, 'list2':list2, 'list3'=list3})
-
pd.DataFrame(data=zip(list1,list2,list3),columns=['list1','list2','list3'])