我的数据框的一小部分样本采用该格式
**shop** **product** **location** **time** **count_products**
store1 A X 8.30 pm 3
store1 B X 8.30 pm 3
store1 C X 8.30 pm 3
store1 G Y 8.41 pm 2
store1 F Y 8.41 pm 2
store1 C Z 9.02 pm 4
store1 D Z 9.02 pm 4
store1 T Z 9.02 pm 4
store1 R Z 9.02 pm 4
现在我想拆分产品列。我知道str.split可以拆分特殊字符&通过这个我可以拆分列。我想生成的输出应该具有以下格式,
{{1}}
我正在使用熊猫& numpy的。您能否指导我如何才能获得上述输出?提前谢谢。
答案 0 :(得分:3)
您可以使用str.strip
删除,
,将str.split
与stack
一起用于为join
创建Series
原始DataFrame
。
上次reset_index
以避免index
中的重复项,并按reindex_axis
重新排序列名:
print (
df.pop('**product**')
.str
.strip(',')
.str
.split(',',expand=True)
.stack()
.reset_index(drop=True, level=1)
.rename('**product**')
)
0 A
0 B
0 C
1 G
1 F
2 C
2 D
2 T
2 R
Name: **product**, dtype: object
cols = df.columns
print (df.join
(
df.pop('**product**')
.str
.strip(',')
.str
.split(',',expand=True)
.stack()
.reset_index(drop=True, level=1)
.rename('**product**')
).reset_index(drop=True)
.reindex_axis(cols,axis=1))
**shop** **product** **location** **time** **count_products**
0 store1 A X 8.30 pm 3
1 store1 B X 8.30 pm 3
2 store1 C X 8.30 pm 3
3 store1 G Y 8.41 pm 2
4 store1 F Y 8.41 pm 2
5 store1 C Z 9.02 pm 4
6 store1 D Z 9.02 pm 4
7 store1 T Z 9.02 pm 4
8 store1 R Z 9.02 pm 4