例如,这是我拥有的一个 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/