删除一个col中的char / str作为从另一个col-DF Pandas中删除不同str的条件

时间:2017-04-17 10:07:07

标签: python string pandas parsing dataframe

我有一个Dataframe(让我们称之为 my_df )有两列。

发起一个例子:

my_df = pd.DataFrame({'first_col':['theTable','aChair','Lamp','intheCup','aBottle','theGlass'],'second_col':['itisBig','isSmall','itisBright','itisDark','isRed', 'itisWhite']})

给出:

   first_col  second_col
0  theTable   itisBig
1  aChair     isSmall
2  Lamp       itisBright
3  intheCup   itisDark
4  aBottle    isRed
5  theGlass   itisWhite

我想从 first_col 中的每个字符串的开头删除字母“ ”。 此外, 当且仅当此条件满足时,应从 second_col 中的每个字符串(在同一行)的开头删除字母“ it ”强>

结果应该是只有 0,5 的行会受到影响''和' '它'相应地从第一列和第二列中删除:

   first_col   second_col
0   Table      isBig
1   aChair     isSmall
2   Lamp       itisBright
3   intheCup   itisDark
4   aBottle    isRed
5   Glass      isWhite

注意第2行和第2行在second_col中没有更改3(保持:“itisBright”/“itisDark”),因为first_col中出现“the”的条件不符合。

到目前为止,我知道如何删除每个条件“the”& “它分开:

my_df['first_col'] = my_df['first_col'].str.replace('the','')
my_df['second_col'] = my_df['second_col'].str.replace('it','')

但这不好! 因为这里没有依赖。

有人知道如何应用上述条件,以便使用PANDAS同时和依赖删除这些字符串吗?

1 个答案:

答案 0 :(得分:3)

你走在正确的轨道上。基本上,您只需要创建一个关于要修改哪些行的布尔过滤器,然后将这些修改应用于那些行。

import pandas as pd

my_df = pd.DataFrame({'first_col':['theTable','aChair','Lamp','intheCup','aBottle','theGlass'],'second_col':['itisBig','isSmall','itisBright','itisDark','isRed', 'itisWhite']})

changes = my_df['first_col'].str.startswith('the')

my_df.loc[changes, 'first_col'] = my_df.loc[changes, 'first_col'].str.replace('the','')
my_df.loc[changes, 'second_col'] = my_df.loc[changes, 'second_col'].str.replace('it','')