在熊猫中拆分和加入系列

时间:2016-06-18 03:28:33

标签: python pandas join split series

我在下面的数据框中有两个系列。第一个是将出现在第二个字符串中的字符串,它将是一个url字符串。我想要做的是通过连接额外的字符来更改第一个系列,并将更改应用到第二个字符串。

find the string from the source_col

我正在尝试split,然后在dest_col中的该字符串上dest_col,然后对Final中的字符串进行更改。在这里,我把它作为一个名为splitter的新系列,但我宁愿在这里。我认为主要问题是 OrigWord WordinUrl angry_bunny http://www.animal.com/angry_bunny/ear.html angry_bear http://www.animal.com/angry_bear/ear.html angry_bull http://www.animal.com/angry_bull/ear.html 变量,它不起作用和函数的应用。

以下是结果的外观:

"extensionsGallery": {
    "serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
    "cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
    "itemUrl": "https://marketplace.visualstudio.com/items"
}

3 个答案:

答案 0 :(得分:2)

apply实际上并不适用于同一行中的多个列。你可以做的是改变你的函数,使它取代一系列,然后将source_col,dest_col分配给系列中的适当值。一种方法如下:

def trial(x):
    source_col = x["OrigWord"]
    dest_col = x['WordinUrl' ]
    splitter = str(dest_col).split(str(source_col))
    res = splitter[0] + 'angry_' + source_col + splitter[1]
    return res


df['Final'] = df.apply(trial,axis = 1 )

答案 1 :(得分:1)

您可以使用split方法将replace添加到相应的来源,而不是使用angry_

def trial(row):
    row.WordinUrl = row.WordinUrl.replace(row.OrigWord, "angry_" + row.OrigWord)
    row.OrigWord = "angry_" + row.OrigWord
    return row

df.apply(trial, axis = 1)

    OrigWord    WordinUrl
0   angry_bunny http://www.animal.com/angry_bunny/ear.html
1   angry_bear  http://www.animal.com/angry_bear/ear.html
2   angry_bull  http://www.animal.com/angry_bull/ear.html

答案 2 :(得分:1)

这是另一种方法:

df['WordinUrl'] = (df.apply(lambda x: x.WordinUrl.replace(x.OrigWord,
                                                          'angry_' + x.OrigWord), axis=1))

In [25]: df
Out[25]:
  OrigWord                                   WordinUrl
0    bunny  http://www.animal.com/angry_bunny/ear.html
1     bear   http://www.animal.com/angry_bear/ear.html
2     bull   http://www.animal.com/angry_bull/ear.html