【发布时间】:2020-12-22 21:06:20
【问题描述】:
我有一本像这样的字典:
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]
【问题讨论】:
-
您真的要创建一个包含 10000 列的数据框吗?预期输出不清楚
-
是的 10 000 列是预期的输出。每一列代表产品的一个特征。可以把它想象成 3495 代表产品的一个功能,假设描述的产品是汽车,那么 3495 可以代表右手驾驶等
标签: python pandas dataframe dictionary