想要替换 Pandas DataFrame 中的列值,怎么做?

您所在的位置:网站首页 修改dataframe的值 想要替换 Pandas DataFrame 中的列值,怎么做?

想要替换 Pandas DataFrame 中的列值,怎么做?

2022-05-10 17:14| 来源: 网络整理| 查看: 265

在 Pandas DataFrame 中替换列值的方式有很多种,接下来我将介绍几种常见的方法。

一、使用 map() 方法替换 Pandas 中的列值

DataFrame 的列是 Pandas 的 Series。我们可以使用 map 方法将列中的每个值替换为另一个值。

Series.map() 语法Series.map(arg, na_action=None)参数:arg:这个参数用于映射一个 Series。它可以是一个集合或一个函数。na_action:na_action 用于处理 NaN(非数字)值。它可以取两个值-None 或 ignore。None 是默认值,map() 将把映射应用于所有值,包括 Nan 值;ignore 将 NaN 值留在列中,而不传递给映射方法。

它返回一个具有相同索引的 Series。

现在让我们举个例子来实现 map 方法。我们将在下面的例子中使用相同的 DataFrame。

import pandas as pd import numpy as np data = {'name':['michael','louis','jack','jasmine'], 'city':['berlin','paris','roma',np.nan]} df = pd.DataFrame(data,columns=['name','city']) print(df)

输出:

name city 0 michael berlin 1 louis paris 2 jack roma 3 jasmine NaN在 Pandas DataFrame 中用集合替换列值import pandas as pd import numpy as np data = {'name':['michael','louis','jack','jasmine'], 'city':['berlin','paris','roma',np.nan]} df = pd.DataFrame(data,columns=['name','city']) // replace column values with collection df['city'] = df['city'].map({'berlin':'dubai', 'paris':'moscow', 'roma':'milan', np.nan:'NY'}, na_action=None) print(df)

输出:

name city 0 michael dubai 1 louis moscow 2 jack milan 3 jasmine NY

原 DataFrame 中的 city 列值被替换为字典中的新值,作为 map() 方法的第一个参数。

在 Pandas DataFrame 中用函数替换列值import pandas as pd import numpy as np data = {'name':['michael','louis','jack','jasmine'], 'city':['berlin','paris','roma',np.nan]} df = pd.DataFrame(data,columns=['name','city']) //replace column values with function df['city']=df['city'].map('I am from {}'.format) print(df)

输出:

name city 0 michael I am from berlin 1 louis I am from paris 2 jack I am from roma 3 jasmine I am from nan

na_action 默认为 None,所以原列中的 NaN 也被替换为新的字符串 I am from nan。

如果你想保留 NaN 但不被替换,可以将 na_action 设置为 ignore。

import pandas as pd import numpy as np data = {'name':['michael','louis','jack','jasmine'], 'city':['berlin','paris','roma',np.nan]} df = pd.DataFrame(data,columns=['name','city']) // replace column values excluding NaN df['city']=df['city'].map('I am from {}'.format, na_action = 'ignore') print(df)

输出:

name city 0 michael I am from berlin 1 louis I am from paris 2 jack I am from roma 3 jasmine NaN二、在 Pandas 中使用 loc 方法替换列的值

另一种替换 Pandas DataFrame 列值的方法是DataFrame中的loc()方法,loc()方法通过其标签访问值。

DataFrame.loc[] 语法 pandas.DataFrame.loc[condition, column_label] = new_value参数:condition:这个参数返回使条件为真的值。column_label:该参数用于指定要更新的目标列。

通过参数确定值后,我们将其更新为 new_value。

现在我们举个例子来实现 loc 方法。我们将以下面的 DataFrame 为例。

Import pandas as pd data = {'name':['michael','louis','jack','jasmine'], 'grades':[30,70,40,80], 'result':['N/A','N/A','N/A','N/A']} df = pd.DataFrame(data,columns=['name','grades','result']) print(df)

输出:

name grades result 0 michael 30 N/A 1 louis 70 N/A 2 jack 40 N/A 3 jasmine 80 N/A

python基础知识资料分享给大家~~~ 获取方式:

【资料免费领】| 程序员必备指南+Python学习资料,0元抱走!

三、在 Pandas DataFrame 中用条件替换列值

我们可以使用布尔条件来指定目标元素。

Import pandas as pd data = {'name':['michael','louis','jack','jasmine'], 'grades':[30,70,40,80], 'result':['N/A','N/A','N/A','N/A']} df = pd.DataFrame(data,columns=['name','grades','result']) df.loc[df.grades>50,'result']='success' df.loc[df.grades50, 'result']='success'如果 grades 的值大于 50,则值用 sucess 替换。

df.loc[df.grades



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3