【问题标题】:Python / Pandas abbreviating my numbers.Python / Pandas 缩写我的数字。
【发布时间】:2017-12-10 14:29:25
【问题描述】:

可能是一个非常容易解决的问题,但我的英语不够好,无法搜索正确的答案。

Python/Pandas 正在将我写的数字从:6570631401430749 更改为:6.17063140131e+15

我正在合并数百个 csv 文件,而这一列完全错误。该列的名称是“序列号”,它是第 3 列。

import pandas as pd
import glob
import os

interesting_files = glob.glob("*.csv")
df_list = []

for filename in sorted(interesting_files):
    frame = pd.read_csv(filename)
    print(os.path.basename(filename))
    frame['filename'] = os.path.basename(filename)
    df_list.append(frame)
full_df = pd.concat(df_list)
full_df.to_csv('output.csv',encoding='utf-8-sig')

【问题讨论】:

  • 您如何查看生成的 CSV?你确定科学记数法真的被写入文件,而不是你用来查看文件的任何东西执行的自动转换吗? (例如,如果您在 Excel 中打开 CSV,它通常会显示与文件中存储的内容不同的内容。)
  • 是的。我是用记事本++打开的,所以转换真的发生了。
  • 好主意。我的同事一直在走。有时,Excel 确实会在数字和格式方面做一些数字。

标签: python csv pandas glob


【解决方案1】:

如果您想保留原始格式的数据,可以在读取 csv 时使用dtype = object。您可以将代码更改为

import pandas as pd
import glob
import os

interesting_files = glob.glob("*.csv")
df_list = []

for filename in sorted(interesting_files):
    frame = pd.read_csv(filename,dtype=object)
    print(os.path.basename(filename))
    frame['filename'] = os.path.basename(filename)
    df_list.append(frame)
full_df = pd.concat(df_list)
full_df.to_csv('output.csv',encoding='utf-8-sig')

【讨论】:

  • 谢谢。像魅力一样工作。老板想要手动读入 CSV 文件,这至少要花我几个小时。很高兴这成功了。
  • 很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 2022-06-30
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2022-01-17
  • 2017-11-03
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多