系统: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:目标
- 已知一个Df,如下图
- 包括5列
["time", "pos", "value1", "value2", "value3"]
- 包括8行
[0,1,2,3,4,5,6,7]
- 包括5列
- 目标:
- 修改列名:
{'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:部分代码解读
df_1.rename(columns={'time': 'date', 'pos': 'group', 'value1': 'val1', 'value3': 'val3'})
,关键函数df.rename(columns={原列名:新列名, 原列名:新列名})
,通过一个字典的键值对分别表示原列名和新列名。该方法生成了一个新的df,不是直接在原df上进行操作df_2.drop(['value2'], axis=1, inplace=True)
,删除列名为value2的列,axis=1表示按列进行删除,inplace=True
表示对原df进行操作,保留操作后的结果,与第1点的情况不同df_2.fillna("yes", inplace=True)
将nan值用字符串yes进行替换- 定义nan值使用np.nan方法。实际情况中,当df某行某列没有赋值,会出现nan值情况,对于nan值有些情况需要处理,例如使用Django进行网站搭建,后端向前端反馈数据时,不能包括nan值
本文为原创作品,欢迎分享朋友圈
长按图片识别二维码,关注本公众号
Python 优雅 帅气