用符号将熊猫线打断并删除重复元素

时间:2019-09-05 08:18:00

标签: python pandas dataframe

我有一个熊猫数据框,格式为:

  col1  |  col2              | col3  |
   1      dog$cat                73
   2      Inherited pig/dog      21
   3      Inherited cat          99
   4      Inherited weasel$dog   33

我想要的是从col2中删除Inherited,因为它只是不相关的工件,并破坏了美元符号处的其余元素。例如,应将包含dog$cat的行复制到仅包含dog的行和仅包含cat的行中。对于上述情况,理想的结果是:

  col1  |  col2              | col3  |
   1      dog                    73
   1      cat                    73
   2      pig/dog                21
   3      cat                    99
   4      weasel                 33
   4      dog                    33

如何快速执行此操作?

2 个答案:

答案 0 :(得分:1)

使用pandas.Series.str.replacesplit,然后执行pandas.DataFrame.explode

df['col2'] = df['col2'].str.replace('Inherited ', '', regex=True).str.split('$')
new_df = df.explode('col2')
print(new_df)

输出:

   col1     col2  col3
0     1      dog    73
0     1      cat    73
1     2  pig/dog    21
2     3      cat    99
3     4   weasel    33
3     4      dog    33

答案 1 :(得分:0)

替代。

df2 = df.pop('col2')
df.join(pd.DataFrame(df2.str.replace('Inherited','').str.split(r'[$/]').tolist())).set_index(['col1','col3']).stack().reset_index(name='col2').drop('level_2',axis=1)

输出

   col1  col3     col2
0     1    73      dog
1     1    73      cat
2     2    21      pig
3     2    21      dog
4     3    99      cat
5     4    33   weasel
6     4    33      dog