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