我有这张table:
| 团队|X或Y|百分比|
| --|--|--|
| 一|X|百分之八十|
| 一|Y|百分之二十|
| B| X|百分之七十|
| B| Y|百分之三十|
| C| X|百分之六十|
| C| Y|百分之四十|
我想创建一个嵌套的字典,这样如果我输入球队名称和X或Y,我会得到百分比作为返回值。
在Python中,我使用.tolist()方法来创建每个列的列表。
我最初的策略是先从后两列dict_1 = dict(zip(list2, list3))
和dict_2 = dict(zip(list1, dict_1))
中创建一个dict,但这并没有成功,因为列“X或Y”有类似的值,而字典键不能有重复的值。
我想的输出是
{'A':{'X':80%, 'Y':20%}, 'B':{'X':70%,'Y':30%}, ...}
字符串
我该怎么做呢?有更好的方法吗?
5条答案
按热度按时间qni6mghb1#
使用
pd.DataFrame.pivot
:字符串
92vpleto2#
完成此任务的最快方法是使用
itertuples()
遍历该框架并动态创建字典。字符串
其中
result
现在变成期望值:型
一个更“pandas”的代码可以在groupby中调用
to_dict
:型
这比
itertuples
循环慢。不完全相同,但this answer也从一个嵌套对象构造一个嵌套对象,并包含一个基准。
blpfk2vs3#
解决方案1
一个可能的解决方案,使用
pandas.stack
,然后是pandas.unstack
:字符串
@cottontail在下面的评论中建议,这个解决方案的一个更短,更有效的版本:
型
解决方案2
另一种可能的解决方案是使用
groupby.apply
来构造字典:型
输出
型
798qvoo84#
循环所有列(使用
zip()
函数):字符串
示例代码:
型
DF和嵌套Dict输出:
型
w8f9ii695#
我回答了你的最终目标,你想“输入球队名称和输入X或Y,[和]得到的百分比作为返回值”,但输出将看起来与你上面建议的不同。如果这对你不起作用,请忽略这个答案。
我会重新索引表,将输入作为索引,然后从那里获取字典,所以:
字符串