gpt4 book ai didi

python - 在 Pandas DataFrame 中创建带有集合的新列

转载 作者:行者123 更新时间:2023-12-01 23:05:03 24 4
gpt4 key购买 nike

Hello World !

我有一个像这样的 DataFrame:

from pandas import DataFrame

df = DataFrame({"A": ['sd', 'df', 'gh', 'rv'],
"B": ['hj', '4r', 'tg', '2s'],
"C": ['hf', 'qw', 'e4', '7u'],
"D": ['1q', 'nc', 'xf', '7y'],
"E": ['9i', 'g7', 'ce', 'x3']})

    A   B   C   D   E
0 sd hj hf 1q 9i
1 df 4r qw nc g7
2 gh tg e4 xf ce
3 rv 2s 7u 7y x3

我需要创建一个包含集合类型值的新列,其中包含前五列的值。

预期结果是:

    A   B   C   D   E   F
0 sd hj hf 1q 9i {'sd','hj', 'hf', '1q', '9i'}
1 df 4r qw nc g7 {'df','4r', 'qw', 'nc', 'g7'}
2 gh tg e4 xf ce {'gh','tg', 'e4', 'xf', 'ce'}
3 rv 2s 7u 7y x3 {'rv','2s', '7u', '7y', 'x3'}

print(type(df.loc[0, 'F'])) # <class 'set'>
print(type(df.loc[0, 'A'])) # <class 'str'>

我的代码:

from pandas import DataFrame

df = DataFrame({"A": ['sd', 'df', 'gh', 'rv'],
"B": ['hj', '4r', 'tg', '2s'],
"C": ['hf', 'qw', 'e4', '7u'],
"D": ['1q', 'nc', 'xf', '7y'],
"E": ['9i', 'g7', 'ce', 'x3']})

f = {df.loc[0, 'A'], df.loc[0, 'B'], df.loc[0, 'C'], df.loc[0, 'D'], df.loc[0, 'E']}

df = df.assign(F = f)

print(df)

...有 ValueError:值的长度 (5) 与索引的长度 (4) 不匹配。

如果我重写代码,使值的长度与索引的长度匹配:

from pandas import DataFrame

df = DataFrame({"A": ['sd', 'df', 'gh', 'rv'],
"B": ['hj', '4r', 'tg', '2s'],
"C": ['hf', 'qw', 'e4', '7u'],
"D": ['1q', 'nc', 'xf', '7y'],
"E": ['9i', 'g7', 'ce', 'x3']})

f = {df.loc[0, 'A'], df.loc[0, 'B'], df.loc[0, 'C'], df.loc[0, 'D']}

df = df.assign(F = f)

print(df)

...我有 TypeError: 'set' type is unordered.

我请求尊敬的社区帮助解决我的问题。

最佳答案

只需使用:

df['F'] = df.apply(set, axis=1)

但是请注意,您无法控制集合的显示顺序,因为它们是无序容器。

输出:

    A   B   C   D   E                     F
0 sd hj hf 1q 9i {hj, 1q, 9i, sd, hf}
1 df 4r qw nc g7 {nc, df, qw, g7, 4r}
2 gh tg e4 xf ce {e4, xf, gh, ce, tg}
3 rv 2s 7u 7y x3 {7u, x3, rv, 2s, 7y}

关于python - 在 Pandas DataFrame 中创建带有集合的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71075678/

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