遇到如下“没有”索引的文件,处理及其不方便。
1.一般的csv文件及其索引
2.csv文件未设置索引情况下读取到的索引
可以看到
pandas将第一行处理为了列索引,同时由于表格中的第一格(左上角)不为空,因此从左侧开始的第一列并不为行索引,重新为数据添加了新的行索引,从第二行开始,0为初始第一行。
3.如何添加列索引呢?
这里有两个语法是df.reindex()和df.rename()
- df.reindex(['a','b','c','d'])//默认设置index
df.reindex(columns=['one','two','three','four'])//指定设置columns
df.reindex(index=['a','b','c','d'],columns=['one','two','three','four'])//同时设置
- df.rename({‘name’:‘new_name’},axis='colunmns')//修改axis来指定行列
df.rename(columns ={‘name’:‘new_name’},index ={‘name’:‘new_name’})//同时设置
可选参数:inplace=True,如果为true,会直接更改原dataframe。
1.直接使用df.reindex(columns=['one','two','three','four'])
修改索引完成,但成功出现错误。
2.使用rename
语法:
df = df.rename({'a': 'new_a', 'b': 'new_b', 'c': 'new_c', 'd': 'new_d', 'e': 'new_e'},axis='columns')
修改成功,但是丢失了第一行的数据,且我们看到序号这一列其实是无用的,因此还需删除此列。
4.添加数据及排序
添加数据loc是比较方便的做法,但如果第n行有数据,那么new_data将会替换这个数据
new_data=['a','b','c','d']
df.loc[n] = new_data
另一种做法是用append,直接在数据末尾增加一行
data={'a':9,'b':10,'c':11,'d':12}
df.append(data,ignore_index=True)
看看处理结果
接下来是排序
data.sort_values(by='列名')
行索引出现了问题,这时候需要重新索引并删除原索引
- df1 = data.sort_values(by='列名')
df1.reset_index()- df2 = df1.reset_index()
df df2['index']