[869]pandas的dataFrame的行列索引操作
pandas的dataFrame的索引值从1开始
假设有一个dataFrame:
这里的index的索引列是从0开始的,那么现在我想要让它从1开始怎么做? 我搜了几篇文章,发现有的是:
df.index = range(len(df)) //这样的
data_df = pd.DataFrame({'a':a,},index=list(range(1,n))) //这种是创建的时候,不满足我当前的需求
df.reindex(index=list(range(1, df.shape[0]))) //还有这样的,少了一条数据
突然间我就悟出来了,如下所示:
df.index=df.index+1
这样!就好了!
DataFrame中指定位置增加删除一行一列
df=DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'],columns=['one','two','three','four'])
优雅的增加一行,
df.loc['new_raw'] = '3'
df
Out[84]:
one two three four
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
new_raw 3 3 3 3
优雅的增加一列
df['new_colu']='12'#向 DataFrame 添加一列,该列为同一值
df
Out[93]:
one two three four new_colu
a 0 1 2 3 12
b 4 5 6 7 12
c 8 9 10 11 12
d 12 13 14 15 12
new_raw 3 3 3 3 12
- 删除一行、一列
>>> df
A B C D
0 1 3 3 4
1 5 6 7 8
2 1 1 1 1
3 2 3 2 3
#删除A列,不改变原来的data数据,返回删除后的新表data_2。axis为1表示删除列,0表示删除行。inplace为True表示直接对原表修改。
>>> data_2 = df.drop('A',axis=1,inplace=False) #删除列
>>> data_2
B C D
0 3 3 4
1 6 7 8
2 1 1 1
3 3 2 3
>>> df.drop(0,axis=0,inplace=False) #删除行
A B C D
1 5 6 7 8
2 1 1 1 1
3 2 3 2 3
>>>
- 指定位置增加行列
>>> df
A B C D
0 1 3 3 4
1 5 6 7 8
2 1 1 1 1
3 2 3 2 3
4 7 8 9 10
>>> df.insert(0,'E',[11,12,13,14,15]) #插入一列
>>> df
E A B C D
0 11 1 3 3 4
1 12 5 6 7 8
2 13 1 1 1 1
3 14 2 3 2 3
4 15 7 8 9 10
>>> df
E A B C D
0 11 1 3 3 4
1 12 5 6 7 8
2 13 1 1 1 1
3 14 2 3 2 3
4 15 7 8 9 10
df.insert(1,'调换',df.pop('A')) #改变某一列的位置。如:先删除A列,然后在原表data中第1列插入被删掉的列。
>>> df
E 调换 B C D
0 11 1 3 3 4
1 12 5 6 7 8
2 13 1 1 1 1
3 14 2 3 2 3
4 15 7 8 9 10
>>> df 字典方式添加一行,append,忽略索引
a b c d
0 1 3 3 4
1 5 6 7 8
>>>
>>>
>>> row={'a':9,'b':10,'c':11,'d':12}
>>> df.append(row,ignore_index=True)
a b c d
0 1 3 3 4
1 5 6 7 8
2 9 10 11 12
>>> 用loc指定位置添加一行
>>> df.loc[2]=[9,10,11,12]
>>> df
a b c d
0 1 3 3 4
1 5 6 7 8
2 9 10 11 12
>>>
- 指定位置插入一行,索引非数字
>>> df = pd.DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]},index=['c','d','f'])
>>> df
A B
c 0 3
d 1 4
f 2 5
>>> df.loc['c']=['test','test'] ###指定位置插入一行
>>> df
A B
c test test
d 1 4
f 2 5
- 按特定顺序,插入一行,保证索引按序排列
>>> df
E 调换 B C D
0 11 1 3 3 4
1 12 5 6 7 8
2 13 1 1 1 1
3 14 2 3 2 3
4 15 7 8 9 10
>>>
>>> df.loc[5]=[9,9,9,9,9] #插入一行,按E列的顺序,升序
>>> df
E 调换 B C D
0 11 1 3 3 4
1 12 5 6 7 8
2 13 1 1 1 1
3 14 2 3 2 3
4 15 7 8 9 10
5 9 9 9 9 9
>>> df.sort_values(by='E') #按E列排序
E 调换 B C D
5 9 9 9 9 9
0 11 1 3 3 4
1 12 5 6 7 8
2 13 1 1 1 1
3 14 2 3 2 3
4 15 7 8 9 10
>>> df1=df.sort_values(by='E')
>>> df1.reset_index() #重置索引
index E 调换 B C D
0 5 9 9 9 9 9
1 0 11 1 3 3 4
2 1 12 5 6 7 8
3 2 13 1 1 1 1
4 3 14 2 3 2 3
5 4 15 7 8 9 10
>>> df2=df1.reset_index()
>>> del df2['index']
>>> df2 #删除掉原来的索引列index
E 调换 B C D
0 9 9 9 9 9
1 11 1 3 3 4
2 12 5 6 7 8
3 13 1 1 1 1
4 14 2 3 2 3
5 15 7 8 9 10
>>>
pandas中DataFrame修改index、columns名的方法
一般常用的有两个方法:
1、使用DataFrame.index = [newName]
,DataFrame.columns = [newName]
,这两种方法可以轻松实现。
2、使用rename方法(推荐):
DataFrame.rename(mapper = None,index = None,columns = None,axis = None,copy = True,inplace = False,level = None )
参数介绍: mapper,index,columns:可以任选其一使用,可以是将index和columns结合使用。index和column直接传入mapper或者字典的形式。
axis:int或str,与mapper配合使用。可以是轴名称(‘index’,‘columns’)或数字(0,1)。默认为’index’。
copy:boolean,默认为True,是否复制基础数据。
inplace:布尔值,默认为False,是否返回新的DataFrame。如果为True,则忽略复制值。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
df1 = DataFrame(np.arange(9).reshape(3, 3), index = ['bj', 'sh', 'gz'], columns=['a', 'b', 'c'])
print(df1)
'''
a b c
bj 0 1 2
sh 3 4 5
gz 6 7 8
'''
# 修改 df1 的 index
print(df1.index) # 可以打印出print的值,同时也可以为其赋值
df1.index = Series(['beijing', 'shanghai', 'guangzhou'])
print(df1)
'''
a b c
beijing 0 1 2
shanghai 3 4 5
guangzhou 6 7 8
'''
# 可以使用map方法进行映射,map的使用方法就和python中的map几乎一样
print(df1.index.map(str.upper)) # Index(['BEIJING', 'SHANGHAI', 'GUANGZHOU'], dtype='object')
print(df1) # 结果 并未改变, 上面只是返回一个 dataframe 而已
'''
a b c
beijing 0 1 2
shanghai 3 4 5
guangzhou 6 7 8
'''
# 如果 需要 改变的话,可以如下: 另外赋值给一个变量
df1.index = df1.index.map(str.upper)
print(df1) # 这样 就 改变了
'''
a b c
BEIJING 0 1 2
SHANGHAI 3 4 5
GUANGZHOU 6 7 8
'''
# 更快捷的 方法 使用 rename,可以分别为 index 和 column 来指定值
# 使用 map 的方式来赋值
df2 = df1.rename(index=str.lower, columns=str.upper) # 这种方法 照样是产生一个新的 dataframe
print(df2)
''' 可以很轻松的 修改 dataframe 的 index 和 columns
A B C
beijing 0 1 2
shanghai 3 4 5
guangzhou 6 7 8
'''
# 同时,rename 还可以传入字典
df3 = df2.rename(index={'beijing':'bj'}, columns = {'A':'aa'}) # 为某个 index 单独修改名称
print(df3) #
'''
aa B C
bj 0 1 2
shanghai 3 4 5
guangzhou 6 7 8
'''
# 自定义map函数
def test_map(x):
return x+'_ABC'
print(df1.index.map(test_map))
# 输出 Index(['BEIJING_ABC', 'SHANGHAI_ABC', 'GUANGZHOU_ABC'], dtype='object')
print(df1.rename(index=test_map))
'''
a b c
BEIJING_ABC 0 1 2
SHANGHAI_ABC 3 4 5
GUANGZHOU_ABC 6 7 8
'''
参考:https://blog.csdn.net/OldDirverHelpMe/article/details/104001138 https://blog.csdn.net/luoganttcc/article/details/77570024 https://blog.csdn.net/missyougoon/article/details/83780845 https://blog.csdn.net/ai_1046067944/article/details/81382348
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- weblogic Schema validation schemaValidationEnabled=false 启动报错解决
- redis 反序列化deserialize异常问题解决
- redis 入门(二)——maven4.0 + Jedis2.9.0 + redis3.2.6 实战
- spring boot 启动报错Log4j2 could not find a logging implementation 解决
- spring boot 启动 NoClassDefFoundError: org/springframework/core/ErrorCoded 报错
- java.lang.NoSuchMethodError: org.springframework.core.ResolvableType.forInstance 错误解决
- spring boot启动 no method 'getPersistenceUtil'报错解决
- spring redis java.lang.IllegalStateException: Cannot load configuration class: redis.RedisTemplet报错
- Elasticsearch: Index template
- 基于rest风格对Neo4j进行调用访问之———httpClient
- spring boot + mybatis 访问 neo4j
- window下通过ELK框架进行大型日志线下的可视化分析
- 一句话解释ThreadLocal类
- ElasticsSearch 之 倒排索引
- tomcat返回cookie有双引号问题