从熊猫行创建一个dict列表



我有一个奇怪的问题。我在一个数据帧中有一个索引和一堆列。我希望索引是一个键,所有其他列都在列表中。这里有一个的例子

df:

0   1   2   3
Barker Minerals Ltd             
Blackout Media Corp             
Booking Holdings Inc    Booking Holdings Inc    Booking Holdings Inc 4.10 04/13/2025    BOOKING HOLDINGS INC    
Baker Hughes Company    Baker Hughes Company    BAKER HUGHES A GE COMPANY LLC-3.34%-12-15-2027  BAKER HUGHES A GE COMPANY LLC-3.14%-11-7-2029   
Bank of Queensland Limited  Bank of Queensland Limited  Bank of Queensland Limited FRN 10-MAY-2026 3.50% 05/10/26   Bank of Queensland Limited FRN 26-OCT-2020 1.27% 10/26/20   Bank of Queensland Limited FRN 16-NOV-2021 1.12% 11/16/21

如果我执行这个命令,当我希望它是列表的dict时,它会将所有内容都变成列表:

df.to_numpy().tolist()

我想要一个dict,每个键都有其他列中的值列表(有点像这样(:

{
Barker Minerals Ltd:    
Blackout Media Corp:    
Booking Holdings Inc:   [Booking Holdings Inc ,Booking Holdings Inc 4.10 04/13/2025,BOOKING HOLDINGS INC]
Baker Hughes Company:   [Baker Hughes Company ,BAKER HUGHES A GE COMPANY LLC-3.34%-12-15-2027,BAKER HUGHES A GE COMPANY LLC-3.14%-11-7-2029]
Bank of Queensland Limited: [Bank of Queensland Limited ,Bank of Queensland Limited FRN 10-MAY-2026 3.50% 05/10/26,Bank of Queensland Limited FRN 26-OCT-2020 1.27% 10/26/20, Bank of Queensland Limited FRN 16-NOV-2021 1.12% 11/16/21]
}

这样做可能吗?

Michael Szczesny评论中指出的最简单的答案:

df.T.to_dict(orient="list")

输出:

{'Barker Minerals Ltd': [nan, nan, nan, nan],
'Blackout Media Corp': [nan, nan, nan, nan],
'Booking Holdings Inc': ['Booking Holdings Inc',
'Booking Holdings Inc 4.10 04/13/2025',
'BOOKING HOLDINGS INC',
nan],
'Baker Hughes Company': ['Baker Hughes Company',
'BAKER HUGHES A GE COMPANY LLC-3.34%-12-15-2027',
'BAKER HUGHES A GE COMPANY LLC-3.14%-11-7-2029',
nan],
'Bank of Queensland Limited': ['Bank of Queensland Limited',
'Bank of Queensland Limited FRN 10-MAY-2026 3.50% 05/10/26',
'Bank of Queensland Limited FRN 26-OCT-2020 1.27% 10/26/20',
' Bank of Queensland Limited FRN 16-NOV-2021 1.12% 11/16/21']}

此外,如果您想丢失所有nan,则代码如下:

df =  pd.read_csv("df_to_dict.csv", index_col=0)
val = df.T.to_dict(orient="list")
cleaned_val = {}
for i in val:
cleaned_val[i] = [j for j in val[i] if str(j)!="nan"]

cleaned_val

输出如下:

{'Barker Minerals Ltd': [],
'Blackout Media Corp': [],
'Booking Holdings Inc': ['Booking Holdings Inc',
'Booking Holdings Inc 4.10 04/13/2025',
'BOOKING HOLDINGS INC'],
'Baker Hughes Company': ['Baker Hughes Company',
'BAKER HUGHES A GE COMPANY LLC-3.34%-12-15-2027',
'BAKER HUGHES A GE COMPANY LLC-3.14%-11-7-2029'],
'Bank of Queensland Limited': ['Bank of Queensland Limited',
'Bank of Queensland Limited FRN 10-MAY-2026 3.50% 05/10/26',
'Bank of Queensland Limited FRN 26-OCT-2020 1.27% 10/26/20',
' Bank of Queensland Limited FRN 16-NOV-2021 1.12% 11/16/21']}

to_dict()的文档可在此处访问。

最新更新