Pandas map()
Suraj Joshi
2021年1月22日
Pandas
Pandas Series
本教程解释了我们如何使用 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 中特定列的值。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn