Python 读取列标题

Python 读取列标题,python,pandas,csv,indexing,Python,Pandas,Csv,Indexing,我试图用read_csv将逗号分隔的文本文件读入Python。然而,Python正在将标题移到右边一个 列数少于实际列数的数据文件示例:包含更多数据的示例文件: 如果我尝试以下方法,其中infle_fire是上述txt文件: df\u fires=pd.read\u csvinfile\u fire,sep=\,skipinitialspace=True,engine='python' 我在下面看到这个。正如您所看到的,DAY实际上位于TIMEcolumn的上方。 请注意,AREA列中的值来自我

我试图用read_csv将逗号分隔的文本文件读入Python。然而,Python正在将标题移到右边一个

列数少于实际列数的数据文件示例:包含更多数据的示例文件:

如果我尝试以下方法,其中infle_fire是上述txt文件:

df\u fires=pd.read\u csvinfile\u fire,sep=\,skipinitialspace=True,engine='python'

我在下面看到这个。正如您所看到的,DAY实际上位于TIMEcolumn的上方。 请注意,AREA列中的值来自我在更大数据集中的数据,上面的示例子集中未显示该数据

我还尝试了df_fires=pd.read_csvinfile_fire.reset_index,虽然它确实像我希望的那样创建了一个新的索引,但它也会将226列移到上面,并将其命名为index,而不是DAY。

我也尝试了以下方法,但仍然得到了相同的结果

df=pd.read\u csvinfile\u fire

df=pd.read\u csvinfile\u fire,index\u col=None

df=pd.read\u csvinfile\u fire,index\u col=0


我怎样才能解决这个问题?我只想读入文本文件,让Python设置一个新的索引,并保持标题不变。

不需要修改选项,就像熊猫做了正确的事情一样,请参阅和文档中的sep


作为file.txt文件保存您要读取的文件

file.txt = """
    DAY,TIME,GENVEG,LATI,LONGI,AREA
     226,  1200,     2,   -0.5548999786D+01,    0.3167600060D+02,    0.1000000000D+07
     226,  1115,     2,   -0.1823500061D+02,    0.3668500137D+02,    0.1000000000D+07
    """
使用:

import pandas as pd
读取文件:

df = pd.read_csv('file.txt')
如果您查看df.AREA[0],它将是这样的:

'    0.1000000000D+07'
'0.1000000000D+07'
用于删除空格:

df.replace('(^\s+|\s+$)', '', regex=True, inplace=True)
如果您现在尝试调用df,结果将是:

   DAY  TIME  GENVEG               LATI             LONGI              AREA
0  226  1200       2  -0.5548999786D+01  0.3167600060D+02  0.1000000000D+07
1  226  1115       2  -0.1823500061D+02  0.3668500137D+02  0.1000000000D+07
因此,您的df.AREA[0]将如下所示:

'    0.1000000000D+07'
'0.1000000000D+07'
与其他类似,例如:df.LATI[0]


将index设置为False可以解决此问题


df=pd.read\u csvinfile\u fire,index\u col=False

您的数据文件有6列,但您的图片有7列。这是因为样本的数据比我的实际数据集(超过40列)的数据少。我只是在上面放了一个样本作为参考。不能按原样复制。如果我使用read_csv(读取csv)的方式与您提供的csv数据完全相同,则索引列包含行号。我的目的是使示例保持一致,以便清楚您想要的内容。@coldspeed edited我需要以.txt文件的形式读取数据,因为这最终必须用作函数。use stringio仅用于说明目的,关键是读取csv将使用csv.Sniffer,它将找出csv的方言。只是不要提供额外的选项,如sep等。你需要用你自己的couse文件句柄替换StringIO。
'-0.5548999786D+01'