我想了解我是否可以將字串列轉換為PeriodIndex(例如年份),并保留字串(后綴)。
我有以下的資料框架:
我有以下的資料框架。
公司日期......收入稅收
Facebook 2017-01-01 00:00:00 總 ... 1796.00 0.00
Facebook 2018-07-01 00:00:00 共 ... 7423.20 -11.54
Facebook總計 - ... 1704.00 0.00
谷歌 2017-12-01 00:00:00 總 ... 1938.60 -1938.60
谷歌2018-12-01 00:00:00 總 ... 1403.47 -102.01[/span
Google 2018-01-01 00:00:00 Total ... 2028.00 -76.38[/span
谷歌總計 - ... 800.00 -256.98
我試圖將PeriodIndex應用于date:
df['date'] = pd.PeriodIndex(df['date'].values, freq='Y')/code>
然而,什么也沒有發生,因為Pandas無法將其轉換為一個字串。我無法從我的DataFrame中移除Total這個詞。
這就是我期望實作的目標:
公司日期......收入稅收
Facebook 2017總 ... 1796.00 0.00
Facebook 2018 Total ... 7423.20 -11.54
Facebook總計 - ... 1704.00 0.00
谷歌2017總 ... 1938.60 -1938.60
谷歌2018總 ... 1403.47 -102.01
谷歌2018總 ... 2028.00 -76.38
谷歌總計 - ... 800.00 -256.98
我有什么辦法可以解決這個問題嗎?
謝謝!
uj5u.com熱心網友回復:
假設有一個假的資料框架,與你的相似:
dictionary = {'company' : ['Facebook', 'Facebook', 'Facebook_Total','Google', 'Google_Total'] 。
'date' : ['2019-09-14 09:00:08.279000 09:00 Total',
'2020-09-14 09:00:08.279000 09:00 Total'。
'-',
'2021-09-14 09:00:08.279000 09:00 Total'。
'-']。
'revenue' : [10,20,30,40, >50]}。
df = pd.DataFrame(dictionary)
我使用regex模塊來洗掉year列后面的Total,如下:
substring = ' Total'。
for i in range(len(df)) 。
if re.search(substring, df['date'][i] , flags=re.IGNORECASE) 。
df['date'][i] = df['date'][i].replace(' Total',' ')
else: pass。
然后,我使用pd.PeriodIndex,如下:
for i in range(len(df) ) :
if df['date'][i] == '-':
pass: '-'.
else:
df['date'][i] = pd.PeriodIndex(pd.Series(df['date'][i]), freq='Y') [0]
for i in range(len(df)) 。
if df['date'][i] == '-':
pass: '-'.
else:
df['date'][i] = str(df['date'][i]) ' Total'.
上述代碼回傳 :
Out[1] 。
公司日期收入
0 Facebook 2019 Total 10
1 Facebook 2020 總數 20
2 Facebook_Total - 30
3 Google 2021 Total 40
4 Google_Total - 50
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311910.html
標籤:
上一篇:如何及時轉換這些欄目
