亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過分隔符分割 pandas 列,行中具有兩種不同的大小

通過分隔符分割 pandas 列,行中具有兩種不同的大小

呼如林 2024-01-15 15:37:52
我試圖通過空格分隔符將 pandas 數據框中的一列分成多個列。我意識到有些行有一個日期字段,因此與沒有日期字段的行相比,它需要額外的列。這是列值的示例,DA Firstname Lastname 09/30/2020 07:44 AM 9/23/2020 6:06:38 PMJW Firstname Lastname 10/25/2020 11:06 AM None第一行不適合空格分隔符,因為有 8 個空格。第二行適用于我的數據集,因為有 6 個空格。有沒有辦法將日期組合在一起作為分隔符?["Inital" "Firstname" "lastname" "date/time1" "date/time2"] 其中“date/time2”列還可以包含“None”我嘗試使用的代碼是,dataset= pd.read_csv("newOutput6",encoding = "ISO-8859-1", delimiter="\t", names = ['Name','Date'], index=False)tmpDF = pd.DataFrame(columns=['Initals','FName','LName','SignupTime','Waiver'])tmpDF[['Initals','FName','LName','SignupTime','Waiver']] = dataset['Name'].str.split(' ', expand=True)索引 16 是不遵循傳統格式的行,我懷疑需要正則表達式來確定這一點。
查看完整描述

1 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

如果名字和姓氏中沒有空格(否則如何區分它們):


pattern = ('^(?P<Initials>\w+)\s'

           + '(?P<FName>\w+)\s'

           + '(?P<LName>\w+)\s'

           + '(?P<SignupTime>\d+/\d+/\d+ \d+:\d+ \w+)\s'

           + '(?P<Waiver>.*)'

)


df['name'].str.extract(pattern)

輸出:


  Initials      FName     LName           SignupTime                Waiver

0       DA  Firstname  Lastname  09/30/2020 07:44 AM  9/23/2020 6:06:38 PM

1       JW  Firstname  Lastname  10/25/2020 11:06 AM                  None

更新:對于可選的縮寫,您可以嘗試以下模式:


pattern = ('^(?P<Initials>\w+\s)?'    # make initial optional

           + '(?P<FName>\w+)\s+'

           + '(?P<LName>\w+)\s+'

           + '(?P<SignupTime>\d+/\d+/\d+ \d+:\d+ \w+)\s'

           + '(?P<Waiver>.*)'

)

請注意,現在如果Initials存在,將會有一個尾隨空格,您可以輕松處理。


查看完整回答
反對 回復 2024-01-15
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號