Pandas map()

Suraj Joshi 2021年1月22日
Pandas map()

本教程解釋了我們如何使用 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 可以是 functiondictionarySeries 物件,它決定了 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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相關文章 - Pandas Series