Python-科学计算-pandas-13-列名/删除列/替换nan

时间:2022-07-25
本文章向大家介绍Python-科学计算-pandas-13-列名/删除列/替换nan,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 pandas:0.19.2

  • 这个系列讲讲Python的科学计算及可视化
  • 今天讲讲pandas模块
  • 修改Df列名,删除某列,以及将nan值替换为字符串yes

Part 1:目标

  1. 已知一个Df,如下图
    • 包括5["time", "pos", "value1", "value2", "value3"]
    • 包括8[0,1,2,3,4,5,6,7]

2. 目标:

  • 修改列名:{'time': 'date', 'pos': 'group', 'value1': 'val1', 'value3': 'val3'}
  • 删除列value2
  • 替换nan值为yes

Df

Part 2:代码

import numpy as np
import pandas as pd

dict_1 = {"time": ["2019-11-02", "2019-11-03", "2019-11-04", "2019-11-05",
                   "2019-12-02", "2019-12-03", "2019-12-04", "2019-12-05"],
          "pos": ["A", "A", "B", "B", "C", "C", "C", "D"],
          "value1": [10, 20, 30, 40, 50, 60, 70, 80],
          "value2": [20, 30, 40, 50, 60, 70, 80, 90],
          "value3": [20, np.nan, 40, 50, np.nan, 70, np.nan, 90]}

df_1 = pd.DataFrame(dict_1, columns=["time", "pos", "value1", "value2", "value3"])
print("原数据", "n", df_1, "n")

# 重命名列
df_2 = df_1.rename(columns={'time': 'date', 'pos': 'group',
                            'value1': 'val1', 'value3': 'val3'})
print("列名重命名", "n",  df_2, "n")

# 删除列
df_2.drop(['value2'], axis=1, inplace=True)
print("删除列", "n",  df_2, "n")

# 替换nan
df_2.fillna("yes", inplace=True)
print("替换nan", "n",  df_2, "n")

代码截图

运行结果

Part 3:部分代码解读

  1. df_1.rename(columns={'time': 'date', 'pos': 'group', 'value1': 'val1', 'value3': 'val3'}) ,关键函数df.rename(columns={原列名:新列名, 原列名:新列名}),通过一个字典的键值对分别表示原列名新列名。该方法生成了一个新的df,不是直接在原df上进行操作
  2. df_2.drop(['value2'], axis=1, inplace=True)删除列名为value2的列,axis=1表示按列进行删除,inplace=True表示对原df进行操作,保留操作后的结果,与第1点的情况不同
  3. df_2.fillna("yes", inplace=True)nan值用字符串yes进行替换
  4. 定义nan值使用np.nan方法。实际情况中,当df某行某列没有赋值,会出现nan值情况,对于nan值有些情况需要处理,例如使用Django进行网站搭建,后端向前端反馈数据时,不能包括nan