替换 pandas dataframe 中的列值-ag捕鱼王app官网

替换 pandas dataframe 中的列值

作者:迹忆客 最近更新:2024/04/22 浏览次数:

在本教程文章中,我们将介绍如何在 pandas dataframe 中替换列值。我们将介绍三种不同的函数来轻松替换列值。


使用 map() 方法替换 pandas 中的列值

dataframe 的列是 pandas 的 series。我们可以使用 map 方法将列中的每个值替换为另一个值。

series.map() 语法

series.map(arg, na_action=none)
  • 参数:
  1. arg:这个参数用于映射一个 series。它可以是一个集合或一个函数。
  2. na_actionna_action 用于处理 nan(非数字)值。它可以取两个值-noneignorenone 是默认值,map() 将把映射应用于所有值,包括 nan 值;ignorenan 值留在列中,而不传递给映射方法。

它返回一个具有相同索引的 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
  • 参数:
  1. condition:这个参数返回使条件为真的值。
  2. 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

在 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.grades < 50, "result"] = "fail"
print(df)

输出:

      name  grades   result
0  michael      30     fail
1    louis      70  success
2     jack      40     fail
3  jasmine      80  success

df.loc[df.grades>50, 'result']='success'如果 grades 的值大于 50,则值用 sucess 替换。

df.loc[df.grades<50,'result']='fail'如果 grades 值小于 50,则值用 fail 替换。


使用 replace() 方法修改数值

在 pandas dataframe 中替换列值的另一种方法是 series.replace() 方法。

series.replace() 语法

  • 替换一个单一数值
df[column_name].replace([old_value], new_value)
  • 用相同的值替换多个值
df[column_name].replace([old_value1, old_value2, old_value3], new_value)
  • 用多个数值代替多个数值
df[column_name].replace(
    [old_value1, old_value2, old_value3], [new_value1, new_value2, new_value3]
)
  • 用整个 dataframe 的新值替换一个值。
df.replace([old_value], new_value)

我们将在剩下的例子中使用下面的 dataframe。

import pandas as pd
data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}
df = pd.dataframe(data, columns=["name", "salary"])
print(df)

输出:

      name  salary
0  michael     700
1    louis     800
2     jack    1000
3  jasmine    1200

在 pandas dataframe 中用多个值替换列值

import pandas as pd
data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}
df = pd.dataframe(data, columns=["name", "salary"])
df["name"] = df["name"].replace(["michael", "louis"], ["karl", "lionel"])
print(df)

输出:

      name  salary
0     karl     700
1   lionel     800
2     jack    1000
3  jasmine    1200

在 pandas dataframe 中仅用相同的值替换列值

import pandas as pd
data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}
df = pd.dataframe(data, columns=["name", "salary"])
df["salary"] = df["salary"].replace([1000, 1200], 1500)
print(df)

输出:

      name  salary
0     karl     700
1   lionel     800
2     jack    1500
3  jasmine    1500

在 pandas dataframe 中用一个值替换列值

import pandas as pd
data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}
df = pd.dataframe(data, columns=["name", "salary"])
df["salary"] = df["salary"].replace([700], 750)
print(df)

输出:

      name  salary
0     karl     750
1   lionel     800
2     jack    1000
3  jasmine    1200

替换整个 pandas dataframe 中的值

import pandas as pd
data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1000],
}
df = pd.dataframe(data, columns=["name", "salary"])
df = df.replace([1000], 1400)
print(df)

输出:

      name  salary
0     karl     750
1   lionel     800
2     jack    1400
3  jasmine    1400

上一篇:将 pandas 转换为不带索引的 csv

下一篇:

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:python

pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。

pandas 追加数据到 csv 中

发布时间:2024/04/24 浏览次数:352 分类:python

本教程演示了如何在追加模式下使用 to_csv()向现有的 csv 文件添加数据。

pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:python

本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。

pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:python

本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图