iT邦幫忙

0

無法將 Series 的數字加上 0

  • 分享至 

  • xImage

請教各位大大,

我想把資料表日期欄的"-n-" 改成 "-0n"(如:2023-6-15 =>2023-06-15)
請問下方印出的 "-2-" 為何沒變 "-02-" 呢?

import pandas as pd

errors_since_201802=pd.read_csv('errors_201802_20220531.csv')

#把日期欄的-1~9-取代成 -01~09-(如:"-1-" 取代為 "-01-")
def add_zero(date_column_to_check,num):
    if errors_since_201802['日期'].str.contains('-'+str(num)+'-').any():
        return errors_since_201802['日期'].str.replace('-'+str(num)+'-','-'+'0'+str(num)+'-')
    else:
        return "Got nothing."

for i in range(1,10):
    add_zero(errors_since_201802['日期'],i)
  
print(errors_since_201802['日期'][:200])

#印出的 "-2-" 沒變 "-02-"
0             NaN
1      2022-10-21
2      2022-10-22
3      2022-10-22
4      2022-10-22
          ...    
195     2023-2-12
196     2023-2-13
197     2023-2-13
198     2023-2-14
199           NaN
Name: 日期, Length: 200, dtype: object

感謝!

add_zero 函式沒有修改原始的 DataFrame errors_since_201802['日期']。
改成這樣
for i in range(1, 10):
errors_since_201802['日期'] = add_zero(errors_since_201802['日期'], i)
emyschung iT邦新手 5 級 ‧ 2023-06-16 08:47:33 檢舉
了解,我試看看。謝謝大大!:)
嗯我感覺樓上大大的直覺應是對的 你可能並沒有實際更換到原始陣列的值
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0

我不知道是啥語言
不過大致上看得懂
給你以下幾個除錯的方式

//你是否有確認當遇上單位數字的時候  if有成功進入嗎?  以下這邊
if errors_since_201802['日期'].str.contains('-'+str(num)+'-').any():

//確認進入後,此方法是否可以成功+上0,你可以自訂一個簡單的字串去測試
return errors_since_201802['日期'].str.replace('-'+str(num)+'-','-'+'0'+str(num)+'-')

不然用肉眼看感覺上沒啥問題

emyschung iT邦新手 5 級 ‧ 2023-06-16 08:48:02 檢舉

好的,我再試試看。謝謝喔!:)

我要發表回答

立即登入回答