将文本拆分到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 对象列转换为没有日期的时间

如何在庞大的 Pandas 数据框中拆分日、时、分和秒数据?

遍历 pandas 数据框中的所有列以在分隔符上拆分