您当前的位置: 首页 >  Python
  • 0浏览

    0关注

    2393博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python之pandas:对pandas中dataframe数据的构造数据/输出索引、索引列重命名/字段去重/设置复合索引/根据列名获取对应索引等详细攻略

一个处女座的程序猿 发布时间:2021-04-05 10:35:57 ,浏览量:0

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

关注
打赏
1664196048
查看更多评论
立即登录/注册

微信扫码登录

0.0459s