Jul*_*era 5 python csv excel pandas
我试图导出一个带有前导零的列的数据帧,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
但是当我导出到csv时,当我在Excel中打开文件时,所有前导零都会被截断.我怎样才能保留零?
我试图转换为字符串,但它不起作用:
df["CD_LIN_NEG"] = df['T_PROD_CP.LN'].astype(str).apply(lambda x: x.zfill(3))
Run Code Online (Sandbox Code Playgroud)
或以这种方式:
df["CD_LIN_NEG"] = '00' + df['T_PROD_CP.LN'].astype(str)
Run Code Online (Sandbox Code Playgroud)
这是@EdChum建议的一个优秀问题.你会想在来包装你列=""有apply('="{}".format).这将告诉excel将条目视为返回引号内文本的公式.该文本将是您的前导零值.
请考虑以下示例.
df = pd.DataFrame(dict(A=['001', '002']))
df.A = df.A.apply('="{}"'.format)
df.to_excel('test_leading_zeros.xlsx')
Run Code Online (Sandbox Code Playgroud)
这可能与问题不直接相关,但如果数据是通过pandas.read_csv()或从外部源读取的pandas.read_excel(),那么我们可以converters使用 指定相关列str。
例如,
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),
}
Run Code Online (Sandbox Code Playgroud)
将数据保存到 Excel 或 CSV 文件时,将保留前导 0。
| 归档时间: |
|
| 查看次数: |
6314 次 |
| 最近记录: |