学习 DataFrame 对象的高级技巧
学习 DataFrame 对象的高级技巧
在上一节中,我们讲解了可以对数据帧对象执行的基本操作。在本节中,我们将研究数据帧对象上的下一级别操作,以进行数据评估和转换。以下小节将讨论这些操作。
替换数据
一种常见的需求是用另一组值替换数字数据或字符串数据。pandas
库中有很多选项可以用来进行此类数据替换。这些操作最常用的方法是使用 at
方法。at
方法提供了一种访问或更新数据帧中任意单元格数据的简便方法。对于批量替换操作,也可以使用 replace
方法,我们可以通过多种方式使用该方法。例如,我们可以使用该方法将一个数字替换为另一个数字,或将一个字符串替换为另一个字符串,或者替换任何与正则表达式匹配的内容。此外,我们还可以使用该方法替换通过列表或字典提供的任何条目。在下面的代码示例中,我们将介绍大部分替换选项。在本代码示例中,我们将使用与之前代码示例中相同的数据帧对象。以下是示例代码:
import pandas as pd
weekly_data = {
'星期': ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'],
'温度':[40, 33, 42, 31, 41, 40, 30],
'天气': ["晴天", "多云", "晴天", "下雨", "晴天", "多云", "下雨"]}
df = pd.DataFrame(weekly_data)
df.index = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']
print(df)
以上代码的输出结果是:
MON 星期一 40 晴天
TUE 星期二 33 多云
WED 星期三 42 晴天
THU 星期四 31 下雨
FRI 星期五 41 晴天
SAT 星期六 40 多云
SUN 星期日 30 下雨
接下来,我们用这个数据帧对象,一个个地讲解几个替换操作。
-
把数据帧中的出现的所有数字
40
替换为39
:df.replace(40,39, inplace=True)
-
把数据帧中所有的
晴天
替换为晴
:df.replace('晴天', '晴', inplace=True)
-
用正则表达式把满足条件的字符串替换为另一个,在这里是把
多云
替换为阴
:df.replace(to_replace="^多.*",value="阴",inplace=True,regex=True)
-
一次性使用一个字符串列表中的字符串替换另一个字符串列表中的列表的字符串。
df.replace(["星期一", "星期二"], ["周一", "周二"], inplace=True)
-
使用字典中的
键-值
对,替换所有字符串。键
是被替换的字符串,值
是替换字符串:df.replace({ "星期三": "周三", "星期四": "周四"}, inplace=True)
-
使用两个字典,替换指定列中的字符串。在这两个字典中,
键
是列名字,值
是被替换的、替换的值,如下所示:df.replace({ "星期": "星期五"}, { "星期" : "周五"}, inplace=True)
在这个语句中,前一个字典用来指名列名字和被替换的值,第二个字典用来指明同一个列和替换值。
-
使用嵌套字典,替换多个字符串,如下所示:
df<