将文本拆分到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

给TA打赏
共{{data.count}}人
人已打赏
解决方案

响应式导航条在电脑上能用,但在手机上不能用。

2022-4-22 20:00:15

解决方案

在函数react js中传递组件& props。

2022-4-22 20:00:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索