programing

Panda Data Frame 사전 목록 작성

bestcode 2022. 9. 17. 10:46
반응형

Panda Data Frame 사전 목록 작성

다음 Data Frame을 가지고 있습니다.

고객품목1품목2품목3사과 우유 토마토 1개물 오렌지 감자 2개주스 망고칩 3개

각 행의 사전 목록으로 변환하고 싶다.

rows = [
    {
        'customer': 1,
        'item1': 'apple',
        'item2': 'milk',
        'item3': 'tomato'
    }, {
        'customer': 2,
        'item1':
        'water',
        'item2': 'orange',
        'item3': 'potato'
    }, {
        'customer': 3,
        'item1': 'juice',
        'item2': 'mango',
        'item3': 'chips'
    }
]

Use - 외부로 전환하지 않고 출력을 제공합니다.

In [2]: df.to_dict('records')
Out[2]:
[{'customer': 1L, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'},
 {'customer': 2L, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'},
 {'customer': 3L, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}]

사용하다df.T.to_dict().values()다음과 같습니다.

In [1]: df
Out[1]:
   customer  item1   item2   item3
0         1  apple    milk  tomato
1         2  water  orange  potato
2         3  juice   mango   chips

In [2]: df.T.to_dict().values()
Out[2]:
[{'customer': 1.0, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'},
 {'customer': 2.0, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'},
 {'customer': 3.0, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}]

골트의 답변의 연장선상에서-

다음 Data Frame의 경우

   customer  item1   item2   item3
0         1  apple    milk  tomato
1         2  water  orange  potato
2         3  juice   mango   chips

인덱스 값을 포함한 사전 목록을 가져오려면 다음과 같은 작업을 수행할 수 있습니다.

df.to_dict('index')

상위 사전의 키가 인덱스 값인 사전의 사전을 출력합니다.이 특별한 경우,

{0: {'customer': 1, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'},
 1: {'customer': 2, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'},
 2: {'customer': 3, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}}

하나의 열만 선택하려는 경우 이 기능이 작동합니다.

df[["item1"]].to_dict("records")

다음 항목은 작동하지 않고 TypeError: unsupported type: 이 생성됩니다.데이터 프레임이 아닌 딕트로 시리즈를 변환하려고 하기 때문이라고 생각합니다.

df["item1"].to_dict("records")

하나의 열만 선택하고 열 이름을 키로 한 딕트 목록으로 변환해야 했고, 공유해야 할 것 같아서 잠시 동안 꼼짝할 수 없었습니다.

행에 걸쳐 반복할 수도 있습니다.

rows = []
for index, row in df[['customer', 'item1', 'item2', 'item3']].iterrows():
    rows.append({
            'customer': row['customer'],
            'item1': row['item1'],
            'item2': row['item2'],
            'item3': row['item3'],
            })

언급URL : https://stackoverflow.com/questions/29815129/pandas-dataframe-to-list-of-dictionaries

반응형