首页 > 解决方案 > 尝试使用 read_csv 读取时,我的列向左移动

问题描述

我有一个包含 6 列的数据集。但是,当我尝试使用 read_csv 读取它时,与列索引关联的值向左移动 2 列。这是我正在使用的数据集的示例;

 time alpha abeta e2e rg rg2
0.000000 0.402192 3.661472 0.599572 0.606992 0.636918
1.000000 0.411551 3.697878 0.580192 0.604391 0.624746
2.000000 0.354966 3.408603 0.704422 0.622932 0.653885
3.000000 0.359647 3.473973 0.681276 0.624507 0.656729
4.000000 0.359812 3.614721 0.619767 0.619774 0.647542

不用担心标题不匹配,我用记事本打开了文件。但是,当我尝试使用代码读取文件时

d=pd.read_csv("C:/Users/Casper/Downloads/data.xvg" ,sep=' ')
d.head()
print(d)

我得到这个输出;

 Unnamed: 0    Unnamed: 1      time  ...       e2e        rg  rg2
0             0.0      0.402192  3.661472  ...  0.636918       NaN  NaN
1             1.0      0.411551  3.697878  ...  0.624746       NaN  NaN
2             2.0      0.354966  3.408603  ...  0.653885       NaN  NaN
3             3.0      0.359647  3.473973  ...  0.656729       NaN  NaN
4             4.0      0.359812  3.614721  ...  0.647542       NaN  NaN 

如您所见,列向左移动了 2,因此现在有 8 列,我知道这是不正确的。它只是突然创建新列。

当我尝试明确给出列标题时,像这样

d=pd.read_csv("C:/Users/Casper/Downloads/data.xvg" ,sep=' ',names=['t','Alpha','abeta','e2e','rg','rg2'])
d.head()
print(d)

我明白了

                        t     Alpha     abeta       e2e        rg  rg2
NaN NaN               time     alpha     abeta       e2e        rg  rg2
0.0 0.402192      3.661472  0.599572  0.606992  0.636918       NaN  NaN
1.0 0.411551      3.697878  0.580192  0.604391  0.624746       NaN  NaN
2.0 0.354966      3.408603  0.704422  0.622932  0.653885       NaN  NaN
3.0 0.359647      3.473973  0.681276  0.624507  0.656729       NaN  NaN

现在有正确的列数,但主要问题仍然存在。这些列似乎无缘无故地向左移动,我看到完全相同的代码在我眼前正常工作。我是一个初学者,所以我完全不知道什么可能导致这个或如何解决这个问题,考虑到它确实可以在另一台具有相同模块和所有内容的计算机上工作。感谢您的关注,祝您有美好的一天。

我意识到列显示不正确,但我没有时间纠正,对不起。

标签: pythonpandasdataframe

解决方案


标题行中有一个前导空格。

让你的数据像这样

time alpha abeta e2e rg rg2
0.000000 0.402192 3.661472 0.599572 0.606992 0.636918
1.000000 0.411551 3.697878 0.580192 0.604391 0.624746
2.000000 0.354966 3.408603 0.704422 0.622932 0.653885
3.000000 0.359647 3.473973 0.681276 0.624507 0.656729
4.000000 0.359812 3.614721 0.619767 0.619774 0.647542

在执行相同的 python 代码时,这将是输出:

   time     alpha     abeta       e2e        rg       rg2
0   0.0  0.402192  3.661472  0.599572  0.606992  0.636918
1   1.0  0.411551  3.697878  0.580192  0.604391  0.624746
2   2.0  0.354966  3.408603  0.704422  0.622932  0.653885
3   3.0  0.359647  3.473973  0.681276  0.624507  0.656729
4   4.0  0.359812  3.614721  0.619767  0.619774  0.647542

如果您不允许修改数据文件,请使用此

df = pd.read_csv("C:/Users/Casper/Downloads/data.xvg", sep=' ',skiprows=1, names=['time', 'alpha', 'abeta', 'e2e', 'rg', 'rg2'])

推荐阅读