拆分文字&使用pandas在python中相应地附加

时间:2016-12-02 07:31:42

标签: python pandas numpy split append

我的数据框的一小部分样本采用该格式

**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的。您能否指导我如何才能获得上述输出?提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用str.strip删除,,将str.splitstack一起用于为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