我有一個包含 4 列的資料框。我想使用其中的 2 列作為字典的鍵,其中的值是剩余的 2 列(因此是資料框)
birdies = pd.DataFrame({'Habitat' : ['Captive', 'Wild', 'Captive', 'Wild'],
'Animal': ['Falcon', 'Falcon','Parrot', 'Parrot'],
'Max Speed': [380., 370., 24., 26.],
'Color': ["white", "grey", "green", "blue"]})
#this should ouput speed and color
birdies_dict["Falcon"]["Wild"]
#this should contain a dictionary, which the keys are 'Captive','Wild'
birdies_dict["Falcon"]
我找到了一種生成資料框字典的方法,以單列作為鍵,但不包含 2 列:
birdies_dict = {k:table for k,table in birdies.groupby("Animal")}
uj5u.com熱心網友回復:
傳遞to_dict到內部:
birdies_dict = {k:d.to_dict() for k,d in birdies.groupby('Animal')}
birdies_dict['Falcon']['Habitat']
輸出:
{0: 'Captive', 1: 'Wild'}
或者你的意思是:
out = birdies.set_index(['Animal','Habitat'])
out.loc[('Falcon','Captive')]
這使:
Max Speed 380
Color white
Name: (Falcon, Captive), dtype: object
uj5u.com熱心網友回復:
IUC:
birdies_dict = {k:{habitat: table[['Max Speed', 'Color']].to_numpy() for habitat in table['Habitat'].to_numpy()} for k,table in birdies.groupby("Animal")}
或者
birdies_dict = {k:{habitat: table[['Max Speed', 'Color']] for habitat in table['Habitat'].to_numpy()} for k,table in birdies.groupby("Animal")}
#In this case inner key will have a dataframe
OUTPUT:
Outer_key: Falcon
inner_key: Captive
Type: <class 'numpy.ndarray'>
Data
[[380.0 'white']
[370.0 'grey']]
--------------------
inner_key: Wild
Type: <class 'numpy.ndarray'>
Data
[[380.0 'white']
[370.0 'grey']]
--------------------
==================================================
Outer_key: Parrot
inner_key: Captive
Type: <class 'numpy.ndarray'>
Data
[[24.0 'green']
[26.0 'blue']]
--------------------
inner_key: Wild
Type: <class 'numpy.ndarray'>
Data
[[24.0 'green']
[26.0 'blue']]
--------------------
==================================================
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/330468.html
下一篇:傳遞閉包
