替换 pandas dataframe 中的列值
在本教程文章中,我们将介绍如何在 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
在 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
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
pandas dataframe dataframe.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:python
-
dataframe.shift() 函数是将 dataframe 的索引按指定的周期数进行移位。
python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:python
-
python pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:python
-
pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 dataframe 中。
pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:python
-
本教程介绍了如何在 pandas 中使用 dataframe.merge()方法合并两个 dataframes。
pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:python
-
本教程介绍了如何使用 python 中的 loc 和 iloc 从 pandas dataframe 中过滤数据。
在 python 中将 pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:python
-
了解如何在 python 中将 pandas 系列日期时间转换为字符串