【问题标题】:string split on multiple delimeters在多个分隔符上拆分字符串
【发布时间】:2019-08-21 14:49:53
【问题描述】:

我有一个数据集,其中 info 列由如下字符串组成:

data['info'][0] = 'Banshidhar Roadlines - Ahmedabad Address Opp. Mahadev Avenue, Nr. Sardar Patel Ring Road, Ahmedabad Email : WebSite : City : Ahmedabad, Ahmedabad Pin Code : 382415 State : Gujarat, India Contact No. : 079- - 29292559, 65447413, GST No. : Company Registration No. : About Company Contact Person : Santram B. Yadav Mobile No. : 9376102361, 9377177197, Contact Person : Mobile No. : , , Contact Person : Mobile No. : , , Truck Available : Services : Daily Service :-Gujarat, Maharashtra, Karnataka, Rajasthan, U.P., Bihar & All Over India '

我想拆分字符串,以便我可以在自己的列中获取电子邮件、网站、城市、Pin 代码等数据。我尝试使用re.split,但字符串中有多个 Contact Person 值。

如何区分它们?

【问题讨论】:

  • 您如何想要区分它们?
  • 为每个“联系人”创建不同的列,例如 Contact_Person_1,Contact_Person_2...
  • 在您的示例中,有三个联系人插槽,其中两个是空的。数据中的联系人是否总是存在三个“职位”?
  • 是的,联系人总是有三个职位,其中一些可能包含也可能不包含数据
  • 这个问题太宽泛了,特别是考虑到你只提供了一行数据,你不能合理地期望这里给出的任何答案都适用于所有 100,000 行(或者你有多少行,>> 1当然)。

标签: python regex python-3.x string pandas


【解决方案1】:

所以我做的是这样的:

new = data["info"].str.split("Email :|Address |WebSite :|City :|Pin Code :|State :|Contact No. :|GST No. :|Company Registration No. :|Contact Person :|Mobile No. :|Truck Available :|Services :|Service :", expand=True)

然后将new的元素赋值给data

data["Address"] = new[1]
data["Email"] = new[2]
data["Website"] = new[3]
data["City"] = new[4]
data["Pin Code"] = new[5]

像这样。对于多个联系人,我这样做了

data["Contact person 1"] = new[10]
data["p1_contact_no"] = new[11]
data["Contact person 2"] = new[12]
data["p2_contact_no"] = new[13]
data["Contact person 3"] = new[14]
data["p3_contact_no"] = new[15]

【讨论】:

  • 如果有人有更好的/pythonic 的方式来做到这一点,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2021-06-23
  • 2020-04-17
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2011-11-28
  • 2013-10-30
  • 2018-02-27
相关资源
最近更新 更多