gpt4 book ai didi

python-3.x - 如何在 python 模块 pandas 中读取 "\n\n"?

转载 作者:行者123 更新时间:2023-12-03 19:44:55 25 4
gpt4 key购买 nike

有一个数据文件,每行末尾都有\n\n
http://pan.baidu.com/s/1o6jq5q6
我的系统:win7+python3.3+R-3.0.3
在 R 中

sessionInfo()

[1] LC_COLLATE=Chinese (Simplified)_People's Republic of China.936
[2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936
[3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936
[4] LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_People's Republic of China.936

在 python 中:chcp 936

我可以在 R 中阅读。

read.table("test.pandas",sep=",",header=TRUE)

就是这么简单。

我可以在 python 中读取它以获得几乎相同的输出。

fr=open("g:\\test.pandas","r",encoding="gbk").read()
data=[x for x in fr.splitlines() if x.strip() !=""]
for id,char in enumerate(data):
print(str(id)+","+char)

当我在 python 模块 pandas 中读取它时,

import pandas as pd
pd.read_csv("test.pandas",sep=",",encoding="gbk")

我在输出中发现了两个问题:
1)如何正确对齐(我在其他帖子中问过的问题)
how to set alignment in pandas in python with non-ANSI characters
2)每个真实数据中都有一条NaN线。

我可以改进我的 pandas 代码以在控制台中更好地显示吗?

enter image description here
enter image description here
enter image description here

最佳答案

当使用 open('test.pandas', 'rb') 读取文件时,您的文件似乎包含 '\r\r\n' 作为其行终止符。 Python 3.3 似乎确实将其转换为 '\n\n' 而 Python 2.7 在使用 open('test.pandas', 'r', encoding='gbk') 读取时将其转换为 '\r\n'

pandas.read_csv确实有一个 lineterminator 参数,但它只接受单个字符终止符。

您可以做的是在将文件传递给 pandas.read_csv() 之前稍微处理一下文件,您可以使用 StringIO它将在文件接口(interface)中包装一个字符串缓冲区,这样您就不需要先写出一个临时文件。

import pandas as pd
from io import StringIO

with open('test.pandas', 'r', encoding='gbk') as in_file:
contents = in_file.read().replace('\n\n', '\n')

df = pd.read_csv(StringIO(contents))

(我没有下面输出的 GBK 字符集。)

>>> df[0:10]
??????? ??? ????????
0 HuangTianhui ?? 1948/05/28
1 ?????? ? 1952/03/27
2 ??? ? 1994/12/09
3 LuiChing ? 1969/08/02
4 ???? ?? 1982/03/01
5 ???? ?? 1983/08/03
6 YangJiabao ? 1988/08/25
7 ?????????????? ?? 1979/07/10
8 ?????? ? 1949/10/20
9 ???»? ? 1951/10/21

在 Python 2.7 中,StringIO() 位于模块 StringIO 中,而不是 io

关于python-3.x - 如何在 python 模块 pandas 中读取 "\n\n"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23013440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com