>> x -6ren">
gpt4 book ai didi

python - 数据框到 frozenset

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:04 24 4
gpt4 key购买 nike

我想将数据框转换为卡住集并将数据框列保留在卡住集中。

例子

x=pd.DataFrame(data=dict(sample=["A","B","C"],lane=[1,1,2]))
>>> x
lane sample
0 1 A
1 1 B
2 2 C

我想要这样的东西:

x2= {frozenset({("sample", "A"), ("lane", 1)}),
frozenset({("sample", "B"), ("lane", 1)}),
frozenset({("sample", "C"), ("lane", 2)})}

>>> x2
{frozenset({('sample', 'B'), ('lane', 1)}), frozenset({('sample', 'A'), ('lane', 1)}), frozenset({('lane', 2), ('sample', 'C')})}

我尝试了 x.apply(frozenset,1) 但它给了我:

0    (1, A)
1 (1, B)
2 (C, 2)
dtype: object

任何帮助都是有用的。谢谢

最佳答案

您可以使用 pd.DataFrame.to_dict 将数据框转换为您需要的records 格式:

x.to_dict('records')

# [{'sample': 'A', 'lane': 1},
# {'sample': 'B', 'lane': 1},
# {'sample': 'C', 'lane': 2}]

由于这会产生一个列表,因此您可以将 frozenset 映射到列表,如下所示:

# using abbreviation 'r' instead of 'records'
map(lambda y: frozenset(y.iteritems()), x.to_dict('r'))

# [frozenset([('sample', 'A'), ('lane', 1)]),
# frozenset([('sample', 'B'), ('lane', 1)]),
# frozenset([('sample', 'C'), ('lane', 2)])]

或者,如果您的输出应该是一组卡住集,则使用集合理解:

{frozenset(y.iteritems()) for y in x.to_dict('records')}

# set([frozenset([('sample', 'C'), ('lane', 2)]),
# frozenset([('sample', 'B'), ('lane', 1)]),
# frozenset([('sample', 'A'), ('lane', 1)])])

关于python - 数据框到 frozenset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48769224/

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