我有一个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同时和依赖删除这些字符串吗?
答案 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','')