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

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

將僅包含行的連續文本文件解析為熊貓數據框

將僅包含行的連續文本文件解析為熊貓數據框

慕碼人2483693 2022-12-27 16:50:00
我有一個包含重復行的文本文件,我想轉換成一個數據框。10/21/2019abcdef100.0010/22/2019ghijk120.00有一個明顯的模式,我希望數據框看起來像這樣:Data       | Description | Amount10/21/2019 | abcdef      | 100.0010/22/2019 | ghijk       | 120.00這是怎么做到的?
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

一些正則表達式來提取細節,然后向前填充前兩列并刪除空值


pattern = r"(?P<Date>\d{2}/\d{2}/\d{4})|(?P<Description>[a-z]+)|(?P<Amount>\d{1,}\.00)"


res = (df1.text.str.extract(pattern)

       .assign(Date = lambda x: x.Date.ffill(),

               Description = lambda x: x.Description.ffill()

              )

       .dropna(how='any')

      )


res



     Date   Description Amount

2   10/21/2019  abcdef  100.00

5   10/22/2019  ghijk   120.00

如果你不關心正則表達式,并且格式是不變的,那么我們可以用 numpy 重塑數據并創建一個新的數據框。


#reshape the data

#thanks to @Chester 

#removes unnecessary computation

res = np.reshape(df1.to_numpy(),(-1,3))



#create new dataframe

pd.DataFrame(res,columns=['Date','Description','Amount'])


       Date Description Amount

0   10/21/2019  abcdef  100.00

1   10/22/2019  ghijk   120.00


查看完整回答
反對 回復 2022-12-27
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

將原始數據從文件讀取到 aSeries并轉換為PandasArray以簡化以后對索引的處理:

raw_data = pd.read_csv("path\to\a\data\file.txt", names=['raw_data'], squeeze=True).array

創建一個DataFrame使用切片:

df = pd.DataFrame(data={'Data': raw_data[::3], 'Description': raw_data[1::3], 'Amount': raw_data[2::3]})

只需 2 個簡單的步驟,無需正則表達式和不必要的轉換。簡短高效。


查看完整回答
反對 回復 2022-12-27
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

如果您的字符串具有您提到的確切模式,則可以使用以下代碼


string = '''10/21/2019

abcdef

100.00

10/22/2019

ghijk

120.00'''


token_list = string.split()


Data = token_list[0::3]

Description = token_list[1::3]

Amount = token_list[2::3]


Aggregate = list(zip(Data, Description, Amount))

df = pd.DataFrame(Aggregate, columns = ['Data ', 'Description', 'Amount'])


查看完整回答
反對 回復 2022-12-27
  • 3 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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