例如,这是我拥有的一个 DataFrame。请引用图片链接。

之前:
Before

d = {1: ['2134',20, 1,1,1,0], 2: ['1010',5, 1,0,0,0], 3: ['3457',15, 0,1,1,0]}
columns=['Code', 'Price', 'Bacon','Onion','Tomato', 'Cheese']

df = pd.DataFrame.from_dict(data=d, orient='index').sort_index()
df.columns = columns

我想要做的是将单行扩展为多行。然后数据框应该看起来像下面链接的图像。目的是使用一些列(从“培根”到“奶酪”)作为类别。

之后:
After

我试图找到答案,但失败了。谢谢。

最佳答案

您可以首先使用 set_index stack 进行整形,然后从 query 列和最后 get_dummies 列中通过 level_2 reindex 过滤,以添加缺少的 1 reset_index :

df = df.set_index(['Code', 'Price']) \
       .stack() \
       .reset_index(level=2, name='val') \
       .query('val == 1') \
       .level_2.str.get_dummies() \
       .reindex(columns=df.columns[2:], fill_value=0) \
       .reset_index()
print (df)
   Code  Price  Bacon  Onion  Tomato  Cheese
0  2134     20      1      0       0       0
1  2134     20      0      1       0       0
2  2134     20      0      0       1       0
3  1010      5      1      0       0       0
4  3457     15      0      1       0       0
5  3457     15      0      0       1       0

关于pandas - 如何根据 Pandas 中的值将一行扩展为多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40967554/

10-16 00:54