将文本拆分到pandas数据框中:处理不同维度的文本。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将文本拆分到pandas数据框中:处理不同维度的文本。相关的知识,希望对你有一定的参考价值。
我想把一个 series
到pandas列,但我处理以下问题。
df.head()
Opportunity Name Amount Currency Amount
XXXX - XX - 2019 - 01 - 20 ARS 300
YYY - YY - Y -2019 - 01 -21 CHL 350
ZZZZ - ZZ - 2019 - 03 - 25 ARS 500
TT - TT - T - TT - 2019 - 04 - 26 ARS 1000
每当我试图获得一个新的数据框架,我可以有一个单独的日期列。str.split()
功能与 expands=True
带分体式分离器 -
df['Opportunity Name'].str.split('-' , expand=True)
但我的结果是混乱的,很难选择那些有日期的列,因为它是这样分割的。
0 1 2 3 4 5 6
XXXX XX 2019 01 20 None None
YYY YY Y 2019 01 21 None
ZZZZ ZZ 2019 03 25 None None
TT TT T TT 2019 04 26
这让我很难在数据框上切分,我只想从数据框的字符串中抓取日期。
答案
- 提供的真实数据与显示的样本数据一致,即日期字符总是在最后。
- 使用内置功能
isnumeric
和列表理解来获取列表中的数字。 ''.join([...][-8:])
只合并最后8个字符.to_datetime
转换为数据时间格式
df['Date'] = df['Opportunity Name'].apply(lambda x: ''.join([y for y in x if y.isnumeric()][-8:]))
df['Date'] = pd.to_datetime(df['Date'])
print(df)
Opportunity Name Amount Currency Amount Date
0 XXXX - XX - 32019 - 01 - 20 ARS 300 2019-01-20
1 YYY - YY - Y -2019 - 01 -21 CHL 350 2019-01-21
2 ZZZZ - ZZ - 2019 - 03 - 25 ARS 500 2019-03-25
3 TT - TT - T - TT - 2019 - 04 - 26 ARS 1000 2019-04-26
获取第一个值
df['first_value'] = df['Opportunity Name'].apply(lambda x: x.split('-')[0].strip())
print(df)
Opportunity Name Amount Currency Amount Date first_value
0 XXXX - XX - 32019 - 01 - 20 ARS 300 2019-01-20 XXXX
1 YYY - YY - Y -2019 - 01 -21 CHL 350 2019-01-21 YYY
2 ZZZZ - ZZ - 2019 - 03 - 25 ARS 500 2019-03-25 ZZZZ
3 TT - TT - T - TT - 2019 - 04 - 26 ARS 1000 2019-04-26 TT
以上是关于将文本拆分到pandas数据框中:处理不同维度的文本。的主要内容,如果未能解决你的问题,请参考以下文章
将不同类型的 CSV 字符串加载到 Pandas 数据框中,拆分列,解析日期
Pandas: 如何将一列中的文本拆分为多行? | Python
使用 DataBinding 将一个数据库文本拆分为 3 个文本框
使用 Pandas 将数据框中的 Python 对象列转换为没有日期的时间