我正在使用Jupyter笔记本和pandas将多个csv文件导入python,其中一些文件没有正确的索引列。相反,使用需要操作的数据作为第一列。如何创建常规索引列作为第一列?这似乎是一个微不足道的问题,但我无法在任何地方找到有用的帮助。
我的数据框看起来像什么
我的数据框应该看起来像什么
请您尝试这个:
df.reset_index(inplace = True, drop = True)
如果这个有效,请告诉我。
当您读取csv文件时,请使用pandas.read_csv(index_col=#,*args)
。如果它们没有适当的索引列,请设置index_col=False。
要更改现有DataFrame df的索引,请尝试使用方法df = df.reset_index()
或df=df.set_index(#)
。
当您导入csv文件时,是否使用了index_col
参数?根据文档,它应默认为None
。如果您不使用该参数,则应该没问题。
无论如何,您都可以通过使用index_col=False
来强制不使用列。从文档中可以看到:
注意:可以使用index_col=False来强制pandas不使用第一列作为索引,例如当您有一个每行末尾带有分隔符的格式错误文件时。
if "Unnamed: 0" in data:
data.drop("Unnamed: 0", axis=1, inplace=True)
data.index.name
收集它们的名称,然后逐个替换。data.rename(columns={"indexname1": "raw_index"}, inplace=True)
data.rename(columns={"indexname2": "raw_index"}, inplace=True)
....
用于家族血统。
然后,
data.reset_index(inplace=True)
会为每个数据帧创建一个新的索引。如果更倾向于仅为没有索引的数据帧创建新索引,则可以对没有索引的数据帧执行先前的reset_index
命令,然后对其余的数据帧执行data.set_index('indexname1')
、data.set_index('indexname2')
等命令。
然而,为了使数据读取更可持续且不那么繁琐,同时保持血统(例如旧索引),我强烈建议再次将所有数据帧写入文件。在完成上述步骤并确实第一列是(新/旧)索引之后,可以采用以下方法:
data.to_csv(filepath, index=True)
data = pd.read_csv(index_col=0)
Python 3.8.5
pandas==1.2.4
pd.read_csv('file.csv', header=None)