我有一个pandas数据框。
这是创建添加括号的函数:
keyword adGroup goal6Value adCost
aaaa (not set) 0 0.0
+bbbb (not set) 0 0.0
+cccc (not set) 2072 0.0
dddd (not set) 0 0.0
我更改了第一列中的值,根据某些条件(如果没有“+”符号,则添加括号)在关键词上添加括号。
keyword adGroup goal6Value adCost
[aaaa] (not set) 0 0.0
+bbbb (not set) 0 0.0
+cccc (not set) 2072 0.0
[dddd] (not set) 0 0.0
这是创建添加括号的函数:
def add_bracket(df):
df["keyword"] = df["keyword"].astype('str')
keyword_list = list()
for index, row in df.iterrows():
keyword = row["keyword"]
if keyword.find("+") < 0:
keyword = "[" + keyword + "]"
keyword_list.append(keyword)
kw = pd.DataFrame(keyword_list, columns = ['Keyword2'])
df2 = pd.concat([df, kw], axis=1).drop(columns["keyword"]).rename(columns={'Keyword2': 'keyword'})
df2 = df2[['keyword', 'adGroup', 'goal6Value', 'adCost']]
return df2
这个函数产生了我想要的结果,但是在pandas中有没有更简洁的方法,以便我不需要创建df2来添加第一列的输出(基本上是就地进行更改)?
解决方案: 根据@Inder提出的建议,整个函数可以用一行代码写成。
df["keyword"] = df.keyword.apply(lambda x: "[" + x + "]" if x.find("+") < 0 else x)
基于 @RafaelC 的回答。
mask = df.keyword.str.contains('+', regex=False)
df.loc[~mask, 'keyword'] = "[" + df.loc[~mask, 'keyword'] + "]"