我的數據框中有一列(稱爲'FY'),其中的財務年度值格式爲:2015/2016
或2016/2017
。Python Pandas - Dataframe專欄 - 將FY格式'2015/2016'轉換爲'15/16'
我想將整列轉換爲15/16
或16/17
等。
我假設你不知何故只能從字符串,以及第8和第9個字符中取出第3,第4和第5個字符,但還沒有弄清楚如何去做。
任何人都可以幫助我嗎?謝謝。
我的數據框中有一列(稱爲'FY'),其中的財務年度值格式爲:2015/2016
或2016/2017
。Python Pandas - Dataframe專欄 - 將FY格式'2015/2016'轉換爲'15/16'
我想將整列轉換爲15/16
或16/17
等。
我假設你不知何故只能從字符串,以及第8和第9個字符中取出第3,第4和第5個字符,但還沒有弄清楚如何去做。
任何人都可以幫助我嗎?謝謝。
給出一個字符串date = "2015/2016"
,你可以做到以下幾點得到15/16
:
left, right = date.split('/')
同時捕獲獨立日期從字符串,刪除所有,但最後2個字符:
new_left = left[-2:]
new_right = right[-2:]
new_date = new_left+'/'+new_right
編輯:一個一個班輪解決方案直接與數據幀的工作的基礎上,其他答案:
df['new'] = df['fy'].str.split('/')[0][-2:] +'/'+ df['fy'].str.split('/')[1][-2:]
這是一個比較通用的方法,因爲它會與不同長度的字符串的工作,並取得只剩下最後2字符,防止不正確的索引錯誤,並防止你對它們進行硬編碼(即使你的日期可能總是有4個字符加上'/',至少在接下來的8,000年內)
嘗試此
for index, rows in df.iterrows():
s = rows["FY"]
df.loc[index, "FY"] = "".join(s[2:5] + s[7:])
這裏是df
是dataframe對象。
下面是使用這個樣本數據集的另一種方式:
df
fy
0 2015/2016
1 2016/2017
2 2017/2018
df['fy_new'] = df['fy'].str[2:4] + '/' + df['fy'].str[7:9]
df
fy fy_new
0 2015/2016 15/16
1 2016/2017 16/17
2 2017/2018 17/18
完美。完全按照我的意願工作! :) – ScoutEU
選項1
使用pd.Series.str.replace
df.FY.str.replace('\d{2}(\d{2}/)\d{2}(\d{2})', r'\1\2')
0 15/16
1 16/17
Name: FY, dtype: object
選項2
使用pd.DataFrame.replace
df.replace(dict(FY={'\d{2}(\d{2}/)\d{2}(\d{2})': r'\1\2'}), regex=True)
FY
0 15/16
1 16/17
很多偉大的答案在這裏,非常感謝你的幫助。我已經標記安德魯斯答案爲接受的答案,但真的很感謝您的幫助:) – ScoutEU
@ScoutEU感謝您的評論。請記住,你接受的答案的選擇應該是關於你認爲最有用的。但這是你的選擇......很高興我能幫上忙。 – piRSquared
好點。我將在標記之前等到帖子更老。謝謝 – ScoutEU
非常感謝。正如你所說的那樣工作。我有upvoted。我希望你不要介意,但我會接受安德魯的答案,因爲我認爲它可以幫助更多的人,因爲它可以在一行中完成所有事情。 – ScoutEU
好的,我可以幫忙,但是如果你的字符串不知道怎麼回事不同的長度,因爲索引將被抵消或不正確。這種方法更通用 – DarkCygnus
根據您的反饋意見和其他答案擴大我的答案 – DarkCygnus