Python';s的CSVReader似乎在分期付款
有趣的问题是,我正在使用python的CSVreader从UTF-8格式的CSV文件中读取逗号分隔的数据。读卡器在遇到句点时似乎正在截断列名 例如,下面是我的列名示例Python';s的CSVReader似乎在分期付款,python,pandas,csv,validation,Python,Pandas,Csv,Validation,有趣的问题是,我正在使用python的CSVreader从UTF-8格式的CSV文件中读取逗号分隔的数据。读卡器在遇到句点时似乎正在截断列名 例如,下面是我的列名示例 time,b12.76org2101.xz,b12.75org2001.xz,b11.72ogg8090.xy 下面是我如何读取这些数据的 def parseCSV(输入数据): 文件\u至\u打开=输入数据 以csv\u文件的形式打开(文件\u至\u打开): csv_reader=csv.reader(csv_文件,分隔符='
time,b12.76org2101.xz,b12.75org2001.xz,b11.72ogg8090.xy
下面是我如何读取这些数据的
def parseCSV(输入数据):
文件\u至\u打开=输入数据
以csv\u文件的形式打开(文件\u至\u打开):
csv_reader=csv.reader(csv_文件,分隔符=',')
headerLine=True
行=[]
对于csv_读取器中的行:
//这里的列操作代码
下面是CSVReader如何解释这些列名
time,76org2101,75org2001,72ogg8090
这里是重要的一点,我共享的代码是程序中第一件涉及CSV文件的东西。在代码完成执行后,我还可以验证CSV文件本身是否没有更改。问题一定在于CSVReader如何解释句点,但我不确定解决方法是什么
这是另一个有趣的发现。稍后在程序中,我使用Pandas从另一个文件的列中读取相同名称的列表
数据的格式如下所示
COLUMN_NAMES
b12.76org2101.xz,
b12.75org2001.xz,
b11.72ogg8090.xy,
其中,列名称是CSV的标题,下面的项目是行
您可以在这里看到我用来读取这些值的代码
data = pandas.read_csv(file_to_open)
Headers = data['COLUMN_NAMES'].tolist()
熊猫就是这样解释这些行的
76org2101
75org2001
72ogg8090
数据完全相同,我们看到的行为也完全相同!带句点的列名将以完全相同的方式截断
怎么了?因为Pandas和CSVReader都有相同的问题,我想这是一个python问题,但我不知道如何解决它。任何想法都很感激
编辑:问题在于我的代码,我读取了错误的文件,这些文件碰巧与我期望的文件具有相同的列名,只是在句点之前或之后没有任何内容。怎么可能 使用
pd.\uuuu version\uuuu
'0.23.0'
和python
version3.6.5
,我得到了预期的结果:
print(pd.read_csv('test.csv'))
COLUMN_NAMES
0 b12.76org2101.xz
1 b12.75org2001.xz
2 b11.72ogg8090.xy
headers = pd.read_csv('test.csv')['COLUMN_NAMES'].tolist()
print(headers)
['b12.76org2101.xz', 'b12.75org2001.xz', 'b11.72ogg8090.xy']
如果这些值是列,它也可以工作:
pd.DataFrame(columns=headers).to_csv('test1.csv', index=None)
print(pd.read_csv('test1.csv'))
Empty DataFrame
Columns: [b12.76org2101.xz, b12.75org2001.xz, b11.72ogg8090.xy]
Index: []
也许可以尝试更新您的
python
?您使用的是什么版本的pandas
?运行在python 3.6.3上的0.24.2版本如果运行我的第二组代码会发生什么?嗯,似乎运行得很好。所以问题一定在我的代码范围内,开枪