Python 读取列标题
我试图用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=0Python 读取列标题,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列中的值来自我
我怎样才能解决这个问题?我只想读入文本文件,让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'