gpt4 book ai didi

python - 使用重复单元格值作为键将 pandas DataFrame 转换为字典

转载 作者:行者123 更新时间:2023-12-01 00:25:53 26 4
gpt4 key购买 nike

我有一个这样的数据框:

Sol Col1    v1  Col2   v2    Col3  v3   Col4    v4  
1 Y_1_1 0 Y_1_2 1 Y_1_3 0 Y_1_4 0
2 Y_1_1 0 Y_1_2 1 Y_1_3 0 Y_1_4 0
3 Y_1_1 0 Y_1_2 0 Y_1_3 0 Y_1_4 0
4 Y_1_1 0 Y_1_2 0 Y_1_3 1 Y_1_4 0
5 Y_1_1 0 Y_1_2 0 Y_1_3 1 Y_1_4 0
6 Y_1_1 0 Y_1_2 0 Y_1_3 0 Y_1_4 0
7 Y_1_1 0 Y_1_2 1 Y_1_3 0 Y_1_4 0
8 Y_1_1 0 Y_1_2 0 Y_1_3 0 Y_1_4 1
9 Y_1_1 0 Y_1_2 1 Y_1_3 0 Y_1_4 0

我想在这样的字典中转换它:

dic = {1: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
2: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
...}

我想知道我应该用 str 变量 (Y_1_1 Y_1_2 等),只需删除具有变量名称的列(col1col2、...)。

我找到了一些将数据帧转换为字典的示例,但如果我没有错的话,它们中的任何一个都无助于解决我的问题。

有没有一种Python式的方法来进行这种转换?

最佳答案

如果列 col1colN 中有相同的值,那么您可以使用:

#create index by `Sol` column
df = df.set_index('Sol')

#select first row, shift and create dictionary
d = df.iloc[0].shift().to_dict()

#select each `v1` column by indexing, rename columns and convert to dict
out = df.iloc[:, 1::2].rename(columns=d).to_dict('index')
print (out)

{1: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
2: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
3: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 0, 'Y_1_4': 0},
4: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 1, 'Y_1_4': 0},
5: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 1, 'Y_1_4': 0},
6: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 0, 'Y_1_4': 0},
7: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
8: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 0, 'Y_1_4': 1},
9: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0}}

如果 col1colN 列中可能有不同的值,则使用带有 zip 对和取消配对值的字典理解:

d = {k: dict(zip(list(v.values())[::2], list(v.values())[1::2])) 
for k, v in df.set_index('Sol').to_dict('index').items()}
print (d)

{1: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
2: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
3: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 0, 'Y_1_4': 0},
4: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 1, 'Y_1_4': 0},
5: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 1, 'Y_1_4': 0},
6: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 0, 'Y_1_4': 0},
7: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0},
8: {'Y_1_1': 0, 'Y_1_2': 0, 'Y_1_3': 0, 'Y_1_4': 1},
9: {'Y_1_1': 0, 'Y_1_2': 1, 'Y_1_3': 0, 'Y_1_4': 0}}

关于python - 使用重复单元格值作为键将 pandas DataFrame 转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com