Pandas map()
Suraj Joshi
2021年1月22日
本教程解释了我们如何使用 Series.map()
方法将 Pandas Series 的值替换为另一个值。
import pandas as pd
my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])
print(my_series, "\n")
输出:
1 85
2 87
3 90
4 89
dtype: int64
我们将使用上例中显示的 Series my_series
来解释 Pandas 中 map()
方法的工作。
pandas.Series.map()
方法
语法
Series.map(arg, na_action=None)
它根据 arg
参数替换调用者 Series
对象中的值,返回一个 Series
对象。arg
可以是 function
、dictionary
或 Series
对象,它决定了 Series
对象的新值。
na_action
参数可以取 None
或'ignore'
作为其值。'ignore'
值的 na_action
表示忽略 Series
中的 NaN
值,对它们不做任何处理。
示例:对 Pandas Series
应用 map()
方法
import pandas as pd
my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])
altered_series = my_series.map({85: 80, 87: 80, 90: 90, 89: 80})
print("Initial Series:")
print(my_series, "\n")
print("Altered Series:")
print(altered_series, "\n")
输出:
Initial Series:
1 85
2 87
3 90
4 89
dtype: int64
Altered Series:
1 80
2 80
3 90
4 80
dtype: int64
它根据作为 map()
方法参数传递的字典中指定的值,替换 my_series
中的元素。
我们还可以通过 map()
方法使用函数来改变 Pandas 系列的值。
import pandas as pd
my_series = pd.Series([85, 87, 90, 89], index=["1", "2", "3", "4"])
altered_series = my_series.map(lambda x: str(x) + ".00")
print("Initial Series:")
print(my_series, "\n")
print("Altered Series:")
print(altered_series, "\n")
输出:
Initial Series:
1 85
2 87
3 90
4 89
dtype: int64
Altered Series:
1 85.00
2 87.00
3 90.00
4 89.00
dtype: object
它接收 my_series
中的每一个元素,并在 my_series
中的每一个元素的末尾添加 .00
。
示例:使用 map()
方法改变 DataFrame 中的特定列
import pandas as pd
df_1 = pd.DataFrame(
{
"Column 1": [85, 87, 90, 89],
"Column 2": [55, 54, 56, 66],
"Column 3": [23, 95, 65, 45],
},
index=["1", "2", "3", "4"],
)
print("Initial DataFrame:")
print(df_1, "\n")
df_1["Column 1"] = df_1["Column 1"].map(lambda x: x * 10)
print("DataFrame after changing Column 1:")
print(df_1)
输出:
Initial DataFrame:
Column 1 Column 2 Column 3
1 85 55 23
2 87 54 95
3 90 56 65
4 89 66 45
DataFrame after changing Column 1:
Column 1 Column 2 Column 3
1 850 55 23
2 870 54 95
3 900 56 65
4 890 66 45
它将使用 map()
方法只对 DataFrame 的 Column 1
应用 lambda
函数。由于单列是一个 Series
对象,我们可以对 DataFrame 的一列使用 map()
方法。然后我们将 map()
方法返回的 Series
对象赋值回 df_1
DataFrame 的 Column 1
。通过这种方式,我们只改变 DataFrame 中特定列的值。
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn