Извлечение цифр, букв или знаков препинания с левой стороны строкового столбца в Python - PullRequest
0 голосов
/ 16 апреля 2019

Допустим, у меня есть следующий фрейм данных, полученный из OCR, имеет company_info столбец, содержащий цифры, буквы или знаки пунктуации и китайские символы:

import pandas as pd

data = '''\
id,company_info
1, 05B01北京企商联登记注册代理事务所(通合伙)
2, Unit-D 608华夏启商(北京企业管理有限公司)
3, 1004-1005北京中睿智诚商业管理有限公司
4, 17/F(1706)北京美泰德商务咨询有限公司
5, A2006~A2007北京新曙光会计服务有限公司
6, 2906-10中国建筑与室内设计师网'''

df = pd.read_csv(pd.compat.StringIO(data), sep=',')

Я хочу извлечь цифры, буквы илизнаки препинания с левой стороны строк в виде столбцов office_name, а остальные - в виде столбцов company_info.Как я могу сделать это в Python?Благодарю.

Ожидаемый результат выглядит следующим образом:

   id   office_name          company_info
0   1         05B01   北京企商联登记注册代理事务所(通合伙)
1   2    Unit-D 608      华夏启商(北京企业管理有限公司)
2   3     1004-1005        北京中睿智诚商业管理有限公司
3   4    17/F(1706)         北京美泰德商务咨询有限公司
4   5   A2006~A2007         北京新曙光会计服务有限公司
5   6       2906-10           中国建筑与室内设计师网

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

Используйте Series.str.extract с DataFrame.pop для столбца извлечения:

pat = r'([\x00-\x7F]+)([\u4e00-\u9fff]+.*$)'
df[['office_name','company_info']] = df.pop('company_info').str.extract(pat)
print (df)
   id   office_name         company_info
0   1         05B01  北京企商联登记注册代理事务所(通合伙)
1   2    Unit-D 608     华夏启商(北京企业管理有限公司)
2   3     1004-1005       北京中睿智诚商业管理有限公司
3   4    17/F(1706)        北京美泰德商务咨询有限公司
4   5   A2006~A2007        北京新曙光会计服务有限公司
5   6       2906-10          中国建筑与室内设计师网
2 голосов
/ 16 апреля 2019

Вы можете использовать это

^(\d+),\s+([^\u4e00-\u9fff]+).*$
  • ^ - начало строки
  • (\d+) - соответствует одной или нескольким цифрам
  • ,\s+ - Совпадения ,, за которыми следует один или несколько пробелов
  • ([^\u4e00-\u9fff]+) - Совпадение с чем угодно, кроме китайских символов
  • .+ - сопоставить все, кроме новой строки, один или несколько раз
  • $ - конец строки

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...