簡體   English   中英

導出到 CSV 時,如何在列中保留前導零?

[英]How can I keep leading zeros in a column, when I export to CSV?

我正在嘗試導出一個帶有前導零的列的數據框,如下所示:

df["CD_LIN_NEG"]

0     001
1     001
2     004
3     001
4     001
5     001
6     003
7     006
Name: CD_LIN_NEG, dtype: object

但是當我導出到 csv 時,當我在 Excel 中打開文件時,所有前導零都會被截斷任何數字。 我怎樣才能保持零?

我試圖轉換為字符串,但它不起作用:

df["CD_LIN_NEG"] = df['T_PROD_CP.LN'].astype(str).apply(lambda x: x.zfill(3))

或以這種方式:

df["CD_LIN_NEG"] = '00' + df['T_PROD_CP.LN'].astype(str)

這是@EdChum 建議的 excel 問題。 您需要使用apply('="{}".format)將列括在="" 這將告訴 excel 將條目視為返回引號內文本的公式。 該文本將是帶有前導零的值。

考慮以下示例。

df = pd.DataFrame(dict(A=['001', '002']))
df.A = df.A.apply('="{}"'.format)
df.to_excel('test_leading_zeros.xlsx')

這可能與問題沒有直接關系,但如果數據是通過pandas.read_csv()pandas.read_excel()從外部來源讀取的,那么我們可以使用str為相關列指定converters

例如,

import pandas as pd

df = pd.read_excel(
    './myexcel.xlsx',
    converters={
        "serialno": str, # Ensure serialno is read as string, maintaining leading 0's
        "location": lambda x: '-' if x=='' else str(x),
    }

df1 = pd.read_excel(
    './mycsv.csv',
    converters={
        "serialno": str, # Ensure serialno is read as string, maintaining leading 0's
        "location": lambda x: '-' if x=='' else str(x),
    }

將數據保存到 Excel 或 CSV 文件時,將保留前導 0。

最簡單的解決方案是在 Pandas 中讀取txtcsv文件時添加dtype=str

df = pd.read_csv(r'C:\my_folder\my_file.csv', dtype=str)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM