Python之pandas:对pandas中dataframe数据的构造数据/输出索引、索引列重命名/字段去重/设置复合索引/根据列名获取对应索引等详细攻略
目录
对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略
知识点学习
实现代码
输出结果
对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略 知识点学习- 构造数据
- 查看索引
- 修改列索引内元素名称 # 重命名指定行索引名称, []列表的长度必须与df行数一致,可以重复 # 输出当前的索引列名称
- 设置单个索引列 # 指定索引列,其中drop=False 表示保留原先索引列的数据 # 设置索引列名称 # 输出当前的索引列名称
- 字段去重 # unique()对某列实现去重
- 设置复合索引:将多列设置为索引 # 输出当前的索引列名称
- 根据列名获取对应索引
import pandas as pd
import numpy as np
# 1、定义数据集
contents={"name": ['Bob', 'LiSa', 'Mary', 'Alan'],
"ID": [1, 2, 3, 4], # 输出 NaN
"ID02": [1, 2, ' ', None], # 输出 NaN
"age": [np.nan, 28, 38 , '' ], # 输出
"age02": [14, 26, 24 , 6],
"age03": [14, '26', '24' , '6'],
"born": [pd.NaT, pd.Timestamp("1990-01-01"), pd.Timestamp("1980-01-01"), ''], # 输出 NaT
"sex": ['男', '女', '女', None,], # 输出 None
"hobbey":['打篮球', '打羽毛球', '打乒乓球', '',], # 输出
"money":[200.0, 240.0, 290.0, 300.0], # 输出
"weight":[140.5, 120.8, 169.4, 155.6], # 输出
"test01":[1, 2.123456789, 3.123456781011126, 4.123456789109999], # 输出
"test02":[1, 2.123456789, 3.123456781011126, 4.123456789109999], # 输出
}
data_frame = pd.DataFrame(contents)
# Python之pandas:对pandas中dataframe数据的构造数据/输出索引、索引列重命名/字段去重/设置复合索引/根据列名获取对应索引等详细攻略
# 构造数据
cols01=["name","ID","age","sex",]
nums_df_temp=data_frame.loc[:,cols01]
nums_csv_file="nums_df_temp.csv"
nums_df_temp.to_csv(nums_csv_file)
nums_df=pd.read_csv(nums_csv_file)
nums_df02=nums_df.copy(deep=True)
# 查看索引
print('查看原始索引:',nums_df.index)
print('输出当前的索引列名称:',nums_df.index.name) # 默认None
# 修改列索引内元素名称
nums_df.index = ["0_Rename","1_Rename","2_Rename","3_Rename"] # 重命名指定行索引名称, []列表的长度必须与df行数一致,可以重复
print(nums_df)
print('输出当前的索引列名称:',nums_df.index)
# 设置单个索引列
nums_df=nums_df.set_index('ID',drop=False) # 指定索引列,其中drop=False、True表示保留原先索引列的数据
nums_df.index.name = 'Index_From_ID' # 设置索引列名称
print('输出当前的索引列名称:',nums_df.index.name) # 输出当前的索引列名称
print(nums_df)
# 字段去重
print('字段去重,某列去重后所有元素',nums_df["sex"].unique()) # unique()对某列实现去重
# 设置复合索引:将多列设置为索引
nums_df02 = nums_df02.set_index(["name", "age"])
print('输出复合索引列:',nums_df02.index.name) # 输出当前的索引列名称
print(nums_df02)
# 根据列名获取对应索引
col_name = 'sex'
col_name_index =data_frame.columns.get_loc(col_name)
print('the index of 【%s】 col is'% col_name,col_name_index)
输出结果
查看原始索引: RangeIndex(start=0, stop=4, step=1)
输出当前的索引列名称: None
Unnamed: 0 name ID age sex
0_Rename 0 Bob 1 NaN 男
1_Rename 1 LiSa 2 28.0 女
2_Rename 2 Mary 3 38.0 女
3_Rename 3 Alan 4 NaN NaN
输出当前的索引列名称: Index(['0_Rename', '1_Rename', '2_Rename', '3_Rename'], dtype='object')
输出当前的索引列名称: Index_From_ID
Unnamed: 0 name ID age sex
Index_From_ID
1 0 Bob 1 NaN 男
2 1 LiSa 2 28.0 女
3 2 Mary 3 38.0 女
4 3 Alan 4 NaN NaN
字段去重,某列去重后所有元素 ['男' '女' nan]
输出复合索引列: None
Unnamed: 0 ID sex
name age
Bob NaN 0 1 男
LiSa 28.0 1 2 女
Mary 38.0 2 3 女
Alan NaN 3 4 NaN
the index of 【sex】 col is 7