ProgramingTip

(row, col, values)의 튜플 목록에서 Pandas DataFrame을 생성합니다.

bestdevel 2020. 10. 21. 21:15
반응형

(row, col, values)의 튜플 목록에서 Pandas DataFrame을 생성합니다.


다음과 같은 튜플 목록이 있습니다.

data = [
('r1', 'c1', avg11, stdev11),
('r1', 'c2', avg12, stdev12),
('r2', 'c1', avg21, stdev21),
('r2', 'c2', avg22, stdev22)
]

첫 번째 열에 이름이 지정된 행과 두 번째 열에 이름이 지정된 열이있는 팬더 데이터 프레임에 싶습니다. 이름 행 pandas.DataFrame([x[1:] for x in data], index = [x[0] for x in data])을 처리하는 방법은 비슷 하지만 2 × 2 행렬을 얻기 위해 열을 어떻게 처리 합니까 (이전 세트의 출력은 3 × 4)? 행 레이블을 명시 적으로 생략하는 대신 더 지능적인 방법이 처리?

편집 2 개의 DataFrame이 필요한 것입니다. 하나는 평균 용이고 다른 하나는 표준 용입니다. 맞습니까? 아니면 "셀"에 값 목록을 사용합니까?


다음을 생성 한 후 DataFrame을 피벗 할 수 있습니다.

>>> df = pd.DataFrame(data)
>>> df.pivot(index=0, columns=1, values=2)
# avg DataFrame
1      c1     c2
0               
r1  avg11  avg12
r2  avg21  avg22
>>> df.pivot(index=0, columns=1, values=3)
# stdev DataFrame
1        c1       c2
0                   
r1  stdev11  stdev12
r2  stdev21  stdev22


데이터를 그대로 쌓아 두는 것이 좋습니다.

df = pandas.DataFrame(data, columns=['R_Number', 'C_Number', 'Avg', 'Std'])

# Possibly also this if these can always be the indexes:
# df = df.set_index(['R_Number', 'C_Number'])

그런 다음 말하는 것이 조금 더 기능입니다.

df.set_index(['R_Number', 'C_Number']).Avg.unstack(level=1)

이런 식으로 평균 또는 표준 시스템을 사용하는 것이 암시 적입니다. 반면에 사용 pivot하는 것은 순전히 어떤 의미인지에 대한 열 규칙을 기반으로합니다.


이 질문에 왔을 때 예상했던 것입니다.

#!/usr/bin/env python

import pandas as pd


df = pd.DataFrame([(1, 2, 3, 4),
                   (5, 6, 7, 8),
                   (9, 0, 1, 2),
                   (3, 4, 5, 6)],
                  columns=list('abcd'),
                  index=['India', 'France', 'England', 'Germany'])
print(df)

준다

         a  b  c  d
India    1  2  3  4
France   5  6  7  8
England  9  0  1  2
Germany  3  4  5  6

참고 URL : https://stackoverflow.com/questions/19961490/construct-pandas-dataframe-from-list-of-tuples-of-row-col-values

반응형