我尝试将不同的值应用于另一列的df,使用:
df['url']= np.where(df['client'] == 'xyz', "/s?k={query}&s=relevanceblender&page=%s".format(query=df['keyword']), "other")
字符串但是query被df['keyword']的所有值替换,而不仅仅是有问题的行。谢谢您的帮助。
x3naxklr1#
假设此输入:
df = pd.DataFrame({'client': ['abc', 'abc', 'xyz', 'xyz'], 'keyword': ['kw1', 'kw2', 'kw3', 'kw4'] })
字符串您可以用途:
df['url'] = np.where(df['client'] == 'xyz', df['keyword'].apply("/s?k={}&s=relevanceblender&page=%s".format), 'other')
型
{query}
{}
或者,如果无法更改格式字符串:
df['url'] = np.where(df['client'] == 'xyz', df['keyword'].apply(lambda x: "/s?k={query}&s=relevanceblender&page=%s".format(query=x)), 'other')
型输出量:
client keyword url 0 abc kw1 other 1 abc kw2 other 2 xyz kw3 /s?k=kw3&s=relevanceblender&page=%s 3 xyz kw4 /s?k=kw4&s=relevanceblender&page=%s
dsekswqp2#
其中一种方法是向量化"...".format,如下所示:
"...".format
df = pd.DataFrame({ 'A': [1,2,3,4], 'B': [*'abcd'] }) query_format = np.vectorize('Item {query!r} for {data!r}'.format) df['C'] = np.where(df['A'] > 2, query_format(query=df['B'], data=df['A']), 'other') print(df)
字符串其结果是:
A B C 0 1 a other 1 2 b other 2 3 c Item 'c' for 3 3 4 d Item 'd' for 4
型如需详细信息,请参阅numpy.vectorize。
2条答案
按热度按时间x3naxklr1#
假设此输入:
字符串
您可以用途:
型
{query}
是如何更改为{}
的。*或者,如果无法更改格式字符串:
型
输出量:
型
dsekswqp2#
其中一种方法是向量化
"...".format
,如下所示:字符串
其结果是:
型
如需详细信息,请参阅numpy.vectorize。