![](/img/trans.png)
[英]How to keep leading zeros in a column when reading CSV with Pandas?
[英]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 中讀取txt
或csv
文件時添加dtype=str
:
df = pd.read_csv(r'C:\my_folder\my_file.csv', dtype=str)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.