添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

如何在Pandas DataFrame中拆分文本列并将其合并为新的列

1 人关注

我有一个DF。

             FROM              TO
0  LA:Los_Angeles     NY:New_York
1     NY:New_York  LA:Los_Angeles

我想把部分文字组合成一个新的栏目,像这样。

             FROM              TO  MERGED
0  LA:Los_Angeles     NY:New_York  LA->NY
1     NY:New_York  LA:Los_Angeles  NY->LA

到目前为止,我的代码是。

df = pd.DataFrame({'FROM':['LA:Los_Angeles', 'NY:New_York'], 'TO':['NY:New_York', 'LA:Los_Angeles']})
print(df)
df['MERGED'] = str(df['FROM']).split(':')[0] + '->' + str(df['TO']).split(':')[0]
print(df)

这让人回味无穷。

             FROM              TO               MERGED
0  LA:Los_Angeles     NY:New_York  0    LA->0       NY
1     NY:New_York  LA:Los_Angeles  0    LA->0       NY

它似乎只抓取了第一行并进行了操作。它似乎还包括了字符串中的索引,即引领城市的'0'。我不太清楚我在哪里出了问题。

5 个评论
df["FROM"].str.extract("(\w{2}):")+"->"+df["TO"].str.extract("(\w{2}):")
你想做的事更多 df['FROM'].str.split(':', expand=True)[0] (TO也一样)
虽然这确实有效,但我想要一个不那么 "硬编码 "的方法。你的解决方案有"{2}",我相信这是为了获取':'之前的两个字符?我想直接在':'上分割字符串,然后抓住它左边的所有内容,也就是索引0 @HenryYik
那么就用 \w+ 来代替它。
@Ben.T werid.我能够在一个不同的程序中使用我上面的代码,而没有指定expand=True。哦,谢谢 :)
python
pandas
string
split
stackoverflow
stackoverflow
发布于 2020-09-03
1 个回答
Mike
Mike
发布于 2020-09-03
已采纳
0 人赞同

Try this

df['MERGED'] = df['FROM'].str.split(':').str.get(0) + '->' +df['TO'].str.split(':').str.get(0)