[英]Python concat through a list of strings inside a dataframe
我有這個df:
name | attach
John | ['0001','0002']
Peter | ['0003']
我需要將附加列表中的每個值轉換為鏈接:例如:
name | attach
John | ['http://www.test.com/0001/download', 'http://www.test.com/0002/download']
Peter | ['http://www.test.com/0003/download']
其中每個值都是下載鏈接中的鍵。
我嘗試使用 apply func 但沒有用:
link_part1 = 'http://www.test.com/'
link_part2 = '/download'
df['attach'] = df['attach'].apply(lambda x: x if x is np.NaN else link_part1 + x + link_part2)
顯示以下錯誤:
TypeError:只能將str(不是“list”)連接到str
在上面的示例中, attach
列包含列表,因此當您嘗試添加兩個字符串link_part1
和link_part2
時,您會收到此 TypeError,因為您無法連接這些類型。
您需要對attach
中列表的每個元素進行這種轉換。 此外,通過定義 function,而不是在本例中使用 lambda,使代碼更簡潔。 lambda 有點長:
def make_link(attach):
start = 'http://www.test.com/'
end = '/download'
return [f"{start}{x}{end}" for x in attach]
df['attach'] = df['attach'].apply(make_link)
看一下錯誤消息:它告訴您正在嘗試將列表連接到 str,這只能指您在 lambda function 中使用的“+”操作。 不過,您幾乎做對了,因為您只需要考慮“附加”中的條目是字符串列表而不是字符串本身的事實:
df['attach'] = df['attach'].apply(lambda x: x if x is np.NaN else [link_part1+id+link_part2 for id in x])
應該管用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.