一个有趣的问题,我正在使用python的CSVreader从UTF-8格式的CSV文件中读取逗号分隔的数据。读者在遇到句点时似乎正在截断列名。
例如,这是我的列名的示例。
time,b12.76org2101.xz,b12.75org2001.xz,b11.72ogg8090.xy
这是我读取此数据的方式
def parseCSV(inputData):
file_to_open = inputData
with open(file_to_open) as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
headerLine = True
line = []
for row in csv_reader:
//column manipulation code here
这是CSVReader解释那些列名的方式
time,76org2101,75org2001,72ogg8090
这是重要的一点,我共享的代码是程序中接触该CSV文件的第一件事。代码执行完后,我还可以验证CSV文件本身是否不变。问题必须在于CSVReader如何解释句点,但我不确定解决方法是
这是另一个有趣的发现。在程序的稍后部分中,我将使用Pandas从另一个文件的一列中读取相同名称的列表。
数据格式如下
COLUMN_NAMES
b12.76org2101.xz,
b12.75org2001.xz,
b11.72ogg8090.xy,
COLUMN_NAMES是CSV的标题,而下面的项目是行。
您可以在这里看到我用来读取这些值的代码。
data = pandas.read_csv(file_to_open)
Headers = data['COLUMN_NAMES'].tolist()
这就是熊猫解释那些行的方式
76org2101
75org2001
72ogg8090
数据完全相同,我们看到的行为完全相同!带句号的列名将以完全相同的方式截断。
那是怎么回事?由于Pandas和CSVReader都存在相同的问题,因此我很容易认为这是python问题,但是我不确定如何解决它。任何想法表示赞赏!
编辑:问题出在我的代码上,我正在读取错误的文件,这些文件偶然碰巧具有与预期文件相同的列名,而句点之前或之后没有任何内容。几率!
答案 0 :(得分:1)
使用pd.__version__
'0.23.0'
和python
版本3.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
版本?