gpt4 book ai didi

python - 将字典转换为 Pandas 数据框

转载 作者:行者123 更新时间:2023-12-02 02:40:22 27 4
gpt4 key购买 nike

我有一本看起来像这样的字典:

my_dict = {'product1' : [1, 511, 31, 222, 9020], 'product2' : [92, 511, 314, 4324], 'product3' : [40, 17, 4324]}

我想创建一个以产品为索引的数据框,列名称的范围应为 1 - 10 000,如果与产品关联的值列表具有数字,则应将其标记为 1 或在相应数字的列中为真。

            1    2    3    ... 4324 .... 9020
product1 1 1
product2 1
product3 1

整个词典有 80 个产品,每个产品都与 0 到最多 50 个数字的列表相关联。数字范围为 1 到 10 000。

我真的很感激任何提示,我还没有找到好的方法。我知道我可以使用 pandas.DataFrame.from_dict() 从字典创建一个数据框,但它并没有真正做到我想要的。

我做了一个“丑陋”的解决方案,但我猜这不是最佳实践或Pythonic:

column_names = list(range(0,10000))

df = pd.DataFrame(columns = column_names)
for k, v in my_dict.items():
x = pd.Series(np.ones(len(v), dtype=int), index =v, name=k)
df = df.append(x)

print(df.head())

输出


0 1 2 3 4 5 6 7 8 9 ... \
product1 NaN 1.0 NaN NaN NaN NaN NaN NaN NaN NaN ...
product2 NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN ...
product3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...

9990 9991 9992 9993 9994 9995 9996 9997 9998 9999
product1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
product2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
product3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

[3 rows x 10000 columns]

最佳答案

一种方法是通过替代构造函数pd.DataFrame.from_dict从字典构造一个数据帧来使用start,它处理不同长度设置的数组orient='index'.

df = pd.DataFrame.from_dict(my_dict, orient='index')

然后使用 pd.get_dummies在所有列上:

df = pd.get_dummies(df, columns=df.columns, prefix='', prefix_sep='')
df.columns = pd.to_numeric(df.columns).astype(int)
df.T.groupby(level=0).max().T.reindex(range(df.columns.max()), axis=1)

0 1 2 3 4 5 6 7 8 9 ... \
product1 NaN 1 NaN NaN NaN NaN NaN NaN NaN NaN ...
product2 NaN 0 NaN NaN NaN NaN NaN NaN NaN NaN ...
product3 NaN 0 NaN NaN NaN NaN NaN NaN NaN NaN ...

9010 9011 9012 9013 9014 9015 9016 9017 9018 9019
product1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
product2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
product3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

关于python - 将字典转换为 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63726818/

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