簡體   English   中英

Python 通過 dataframe 內的字符串列表連接

[英]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_part1link_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM