最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas批量統(tǒng)一雜亂日期格式為XX月XX日的實現(xiàn)方法

 更新時間:2026年05月25日 09:46:01   作者:夢因you而美  
在日常Python數(shù)據(jù)分析、Excel數(shù)據(jù)處理場景中,經(jīng)常會遇到表格日期格式雜亂不統(tǒng)一的問題,數(shù)據(jù)中同時存在時間戳日期、年.月.日字符串、月.日簡寫、空值等多種格式,本文將提供一套通用、健壯的解決方案:通過全字符串讀取原始數(shù)據(jù)規(guī)避格式丟失問題,需要的朋友可以參考下

摘要

在日常Python數(shù)據(jù)分析、Excel數(shù)據(jù)處理場景中,經(jīng)常會遇到表格日期格式雜亂不統(tǒng)一的問題,數(shù)據(jù)中同時存在時間戳日期、年.月.日字符串、月.日簡寫、空值等多種格式。Pandas默認讀取會自動解析數(shù)據(jù)類型,極易出現(xiàn)5.10被誤轉(zhuǎn)為5.1、日期解析失敗、數(shù)據(jù)丟失等問題。本文將提供一套通用、健壯的解決方案:通過全字符串讀取原始數(shù)據(jù)規(guī)避格式丟失問題,編寫萬能日期轉(zhuǎn)換函數(shù),將所有雜亂日期統(tǒng)一格式化為XX月XX日中文格式,并支持一鍵導(dǎo)出Excel文件,完美適配各類不規(guī)則日期數(shù)據(jù)處理場景。

項目背景

在處理業(yè)務(wù)Excel數(shù)據(jù)時,日期列格式混亂是高頻痛點,常見的不規(guī)則日期格式如下:

  • 標準時間戳格式:2026-05-16 00:00:00
  • 年.月.日字符串格式:2026.5.18
  • 簡寫月.日格式:5.26、5.24.21
  • 空值數(shù)據(jù):空白單元格、nan、NaT

如果直接使用Pandas默認方式讀取并轉(zhuǎn)換日期,會出現(xiàn)兩大致命問題:一是浮點型日期5.10丟失末尾0,變成5.1;二是多格式混雜導(dǎo)致解析報錯、數(shù)據(jù)錯亂,無法統(tǒng)一統(tǒng)計展示。因此需要一套兼容所有格式、零數(shù)據(jù)丟失、全自動轉(zhuǎn)換的處理方案。

環(huán)境準備

本次項目僅需pandas庫,若未安裝可執(zhí)行以下命令:

pip install pandas

原始數(shù)據(jù)準備

為方便大家測試使用,本文提供代碼模擬數(shù)據(jù)(無需本地Excel)本地Excel原始文件數(shù)據(jù)兩種方式,數(shù)據(jù)完全還原真實業(yè)務(wù)雜亂日期場景。

1.1 真實原始數(shù)據(jù)樣例

原始Excel表格包含4列不規(guī)則日期數(shù)據(jù),覆蓋所有常見異常格式:

日期列1日期列2日期列3日期列4
2026-05-16 00:00:005.264.212026.5.18
2026-05-27 00:00:005.265.112026.5.18
2026-06-17 00:00:005.222026.5.18
2026-05-23 00:00:005.222026.5.18
2026-05-26 00:00:005.182026.5.18
5.22026.5.20
5.26

1.2 兩種數(shù)據(jù)使用方式

1、本地文件模式:新建Excel文件,命名為你的原始文件.xlsx,將上述表格粘貼進去,用于讀取本地真實數(shù)據(jù);

2、代碼模擬模式:無需創(chuàng)建任何文件,代碼內(nèi)置完整測試數(shù)據(jù),可直接運行測試。

完整可運行代碼(帶詳細注釋)

核心優(yōu)化:全字符串讀取數(shù)據(jù),徹底規(guī)避浮點數(shù)據(jù)精度丟失問題,兼容所有日期格式,容錯性拉滿。

方式一:模擬數(shù)據(jù)版(零基礎(chǔ)一鍵運行)

import pandas as pd

# 定義通用日期格式化函數(shù):兼容所有雜亂日期格式,統(tǒng)一轉(zhuǎn)為XX月XX日
def format_to_mmdd(x):
    # 處理空值:NaN、空字符串、字符串nan統(tǒng)一返回空
    if pd.isna(x) or str(x).strip().lower() == "nan":
        return ""
    # 去除首尾空格,統(tǒng)一格式
    s = str(x).strip()

    try:
        # 優(yōu)先解析標準日期格式(時間戳、年-月-日)
        dt = pd.to_datetime(s)
        # 格式化輸出:X月X日
        return f"{dt.month}月{dt.day}日"
    except:
        # 解析失敗后,手動處理.分割的自定義日期格式
        if "." in s:
            parts = s.split(".")
            try:
                # 處理 月.日 格式(例:5.26)
                if len(parts) == 2:
                    return f"{int(parts[0])}月{int(parts[1])}日"
                # 處理 年.月.日 格式(例:2026.5.18)
                if len(parts) == 3:
                    return f"{int(parts[1])}月{int(parts[2])}日"
            except:
                # 格式異常返回空
                return ""
    # 無法識別的格式統(tǒng)一返回空
    return ""

# 1. 內(nèi)置模擬原始數(shù)據(jù),強制全字符串格式,杜絕數(shù)據(jù)類型轉(zhuǎn)換問題
df = pd.DataFrame({
    "日期列1": ["2026-05-16 00:00:00", "2026-05-27 00:00:00", "2026-06-17 00:00:00", 
               "2026-05-23 00:00:00", "2026-05-26 00:00:00", "", ""],
    "日期列2": ["5.26", "5.26", "5.22", "5.22", "5.18", "5.2", "5.26"],
    "日期列3": ["4.21", "5.11", "", "", "", "", ""],
    "日期列4": ["2026.5.18", "2026.5.18", "2026.5.18", "2026.5.18", 
               "2026.5.18", "2026.5.20", ""]
}, dtype=str)

# 2. 批量對所有單元格執(zhí)行日期格式化
df_result = df.applymap(format_to_mmdd)

# 3. 導(dǎo)出處理后的數(shù)據(jù)到Excel,不保留索引
df_result.to_excel("日期格式化結(jié)果.xlsx", index=False)

# 打印結(jié)果查看
print("? 日期格式化完成,處理結(jié)果如下:")
print(df_result)
print("\n? 已成功導(dǎo)出文件:日期格式化結(jié)果.xlsx")

方式二:本地Excel文件讀取版(真實業(yè)務(wù)數(shù)據(jù)使用)

import pandas as pd

# 統(tǒng)一日期格式化函數(shù)
def format_to_mmdd(x):
    if pd.isna(x) or str(x).strip().lower() == "nan":
        return ""
    s = str(x).strip()

    try:
        dt = pd.to_datetime(s)
        return f"{dt.month}月{dt.day}日"
    except:
        if "." in s:
            parts = s.split(".")
            try:
                if len(parts) == 2:
                    return f"{int(parts[0])}月{int(parts[1])}日"
                if len(parts) == 3:
                    return f"{int(parts[1])}月{int(parts[2])}日"
            except:
                return ""
    return ""

# ?? 核心關(guān)鍵:dtype=str 強制所有列以字符串讀取,零數(shù)據(jù)丟失
df = pd.read_excel("你的原始文件.xlsx", dtype=str)

# 批量格式化所有日期
df_result = df.applymap(format_to_mmdd)

# 導(dǎo)出結(jié)果
df_result.to_excel("日期格式化結(jié)果.xlsx", index=False)
print("? 本地文件處理完成,結(jié)果已導(dǎo)出!")

程序運行結(jié)果

所有雜亂日期全部統(tǒng)一為XX月XX日中文格式,空值保留空白,無數(shù)據(jù)丟失、無解析錯誤,最終效果如下:

日期列1日期列2日期列3日期列4
5月16日5月26日4月21日5月18日
5月27日5月26日5月11日5月18日
6月17日5月22日5月18日
5月23日5月22日5月18日
5月26日5月18日5月18日
5月2日5月20日
5月26日
運行代碼后,項目目錄會生成 日期格式化結(jié)果.xlsx 文件,可直接用于報表統(tǒng)計、數(shù)據(jù)展示。

高頻踩坑點總結(jié)(核心重點)

坑點1:默認讀取導(dǎo)致浮點日期精度丟失

Pandas默認會將5.10這類數(shù)據(jù)識別為浮點數(shù),自動舍去末尾0,變成5.1,造成日期錯誤。

? 解決方案:讀取Excel時強制 dtype=str,所有數(shù)據(jù)以原始字符串存儲,完全保留原始信息。

坑點2:多格式混雜日期解析報錯

數(shù)據(jù)同時存在時間戳、年.月.日、月.日多種格式,單一解析規(guī)則會直接報錯、返回空值。

? 解決方案:先使用pd.to_datetime解析標準日期,異常捕獲后手動解析自定義格式,雙層邏輯全覆蓋。

坑點3:空值處理不規(guī)范,出現(xiàn)nan文本

原始數(shù)據(jù)中的NaN、空白單元格,直接轉(zhuǎn)換后會在Excel顯示nan,影響美觀和數(shù)據(jù)使用。

? 解決方案:統(tǒng)一捕獲空值、字符串nan,全部替換為空單元格。

坑點4:帶時分秒的時間戳無法截斷

原始數(shù)據(jù)含2026-05-16 00:00:00帶時間的日期,普通格式化會保留時分秒,無法統(tǒng)一格式。

? 解決方案:通過pd.to_datetime自動提取年月日,舍棄無用時間部分。

拓展用法(按需開啟)

如果需要補零格式(如 05月02日 標準統(tǒng)一格式),只需修改函數(shù)內(nèi)return語句即可:

# 原代碼
return f"{dt.month}月{dt.day}日"
# 修改為補零格式
return f"{dt.month:02d}月{dt.day:02d}日"

修改后效果:5月2日05月02日,適合需要統(tǒng)一字符長度的報表場景。

總結(jié)

本文提供的Pandas日期格式化方案,完美解決了業(yè)務(wù)中多格式混雜日期統(tǒng)一處理的痛點,核心優(yōu)勢如下:

1、零數(shù)據(jù)丟失:全字符串讀取,徹底解決浮點精度丟失問題;

2、兼容性極強:支持時間戳、年.月.日、月.日、空值等所有常見格式;

3、容錯性高:異常格式自動忽略,程序不會報錯中斷;

4、開箱即用:支持模擬數(shù)據(jù)測試+本地文件讀取,一鍵導(dǎo)出Excel。

該代碼可直接復(fù)用在所有Excel日期清洗場景,大幅提升數(shù)據(jù)處理效率。

到此這篇關(guān)于Pandas批量統(tǒng)一雜亂日期格式為XX月XX日的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Pandas統(tǒng)一雜亂日期格式為XX月XX日內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解python分布式進程

    詳解python分布式進程

    在本專題里,小編給大家講述了關(guān)于python分布式進程的相關(guān)知識點內(nèi)容,需要的朋友們參考下。
    2018-10-10
  • Python中消息訂閱應(yīng)用開發(fā)的最優(yōu)5個方案及代碼實現(xiàn)

    Python中消息訂閱應(yīng)用開發(fā)的最優(yōu)5個方案及代碼實現(xiàn)

    消息訂閱是現(xiàn)代分布式系統(tǒng)中實現(xiàn)異步通信和解耦的核心技術(shù)之一,本文將為大家詳細介紹一下5種最優(yōu)的消息訂閱方案,感興趣的小伙伴可以了解下
    2025-03-03
  • python實現(xiàn)通過shelve修改對象實例

    python實現(xiàn)通過shelve修改對象實例

    這篇文章主要介紹了python實現(xiàn)通過shelve修改對象實例,是一個比較實用的技巧,需要的朋友可以參考下
    2014-09-09
  • Python發(fā)送email的3種方法

    Python發(fā)送email的3種方法

    這篇文章主要介紹了Python發(fā)送email的3種方法,本文講解了使用登錄郵件服務(wù)器方法、調(diào)用sendmail命令、使用smtp服務(wù)來發(fā)送三種方法,需要的朋友可以參考下
    2015-04-04
  • 18個幫你簡化代碼的Python技巧分享

    18個幫你簡化代碼的Python技巧分享

    選擇學(xué)習(xí)?python?時,最令我震驚的是它的簡單性和可讀性。但是你知道還可以用更少的代碼行可以讓?Python?代碼變得更簡單嗎?本文為大家總結(jié)了18個幫你簡化代碼的Python技巧,感興趣的可以了解一下
    2022-07-07
  • 詳解pandas中MultiIndex和對象實際索引不一致問題

    詳解pandas中MultiIndex和對象實際索引不一致問題

    這篇文章主要介紹了詳解pandas中MultiIndex和對象實際索引不一致問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python和mysql交互操作實例詳解【基于pymysql庫】

    python和mysql交互操作實例詳解【基于pymysql庫】

    這篇文章主要介紹了python和mysql交互操作,結(jié)合實例形式詳細分析了Python基于pymysql庫實現(xiàn)mysql數(shù)據(jù)庫的連接、增刪改查等各種常見操作技巧,需要的朋友可以參考下
    2019-06-06
  • python中sys模塊的介紹與實例

    python中sys模塊的介紹與實例

    這篇文章主要給大家介紹了關(guān)于python中sys模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python使用plot繪制未來15天氣溫折線圖

    python使用plot繪制未來15天氣溫折線圖

    本文主要介紹了py使用plot繪制未來15天氣溫折線圖,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python 監(jiān)控某個進程內(nèi)存的情況問題

    python 監(jiān)控某個進程內(nèi)存的情況問題

    這篇文章主要介紹了python 監(jiān)控某個進程內(nèi)存的情況問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論

奉贤区| 西宁市| 疏附县| 三台县| 宜兴市| 邹城市| 巴东县| 日照市| 三台县| 和顺县| 闽侯县| 余干县| 清丰县| 澄城县| 特克斯县| 利川市| 东安县| 吉林省| 洪泽县| 汤原县| 乐安县| 施甸县| 定结县| 黄大仙区| 海城市| 泸溪县| 郧西县| 香河县| 清水县| 镇雄县| 临海市| 新密市| 牡丹江市| 商南县| 南汇区| 德令哈市| 台山市| 翼城县| 三江| 深圳市| 齐齐哈尔市|