【发布时间】:2021-03-06 01:48:24
【问题描述】:
我正在用 pandas 清理一个 csv 文件,主要是删除特殊字符,例如('/'、'#' 等)。该文件有 7 列(都不是日期)。
在某些列中,只有数字数据,例如“1980 年 11 月 6 日”。
我注意到直接在读取 csv 文件后,
df = pd.read_csv ('report16.csv', encoding ='ANSI')
此数据变为“11/6/80”,清理后变为“11 6 80”(与输出文件中的结果相同)。因此,无论数据有“/”,它都被解释为日期,python 正在从数据中删除前 2 位数字。
| Data | Expected result | Actual Result |
|---|---|---|
| 11/6/1980 | 11 6 1980 | 11 6 80 |
| 12/8/1983 | 12 8 1983 | 12 8 83 |
以上两个结果都是错误的,因为在实际结果列中,我在最后丢失了 2 位数字。
数据是这样的
| Org Name | Code | Code copy |
|---|---|---|
| ABC | 11/6/1980 | 11/6/1980 |
| DEF | 12/8/1983 | 12/8/1983 |
| GH | 11/5/1987 | 11/5/1987 |
OrgName, Code, Code copy
ABC, 11/6/1980, 11/6/1980
DEF, 12/8/1983, 12/8/1983
GH, 11/5/1987, 11/5/1987
KC, 9000494, 9000494
值得一提的是,该列包含其他数据,例如“900490”、字符串等,但在这些情况下,没有任何问题。
怎样才能不允许这种转换?
【问题讨论】:
-
欢迎来到 SO!只要您以我们习惯的方式提问,您就会在这里找到帮助。在这里,如果您向我们展示您使用的代码以及显示问题的数据 - 事实上,如果您提供minimal reproducible example,您可以获得更相关和更详细的答案。如果您不太了解minimal reproducible example 是什么,请阅读How to Ask...
-
我无法复制。请参阅下面我的(非)答案以获取更多详细信息。
-
这里仍然不是可用的格式。由于问题是在读取 csv 文件时,您应该以原始文本格式而不是电子表格格式显示文件,例如在 Windows 控制台 CMD 窗口中使用
type file.csv或在 Unix 上使用cat file.csv时喜欢。或者当你在一个简单的文本编辑器中打开它,比如 Windows 记事本,或类 Unix 上的 vi,或 notepad++
标签: python pandas dataframe date data-cleaning