0

我有一个形式的熊猫数据框:

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

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

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

我怎样才能快速做到这一点?

4

2 回答 2

1

使用pandas.Series.str.replaceand split,然后执行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
于 2019-09-05T08:21:14.107 回答
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
于 2019-09-05T08:34:37.297 回答