HOWTO · Pandas

如何在 Pandas DataFrame 中建立一個空列

我們可以使用簡單的賦值運算子,reindex(),assign()和 insert()方法向 Pandas 中的 DataFrame 新增一個空列。

本頁內容

我們可以使用 DataFrame 物件的 reindex(),assign() 和 insert() 方法在 Pandas 中向 DataFrame 新增一個空列。我們還可以直接為 DataFrame 的列分配一個空值,以在 Pandas 中建立一個空列。

通過簡單的分配建立 Pandas 空的列

我們可以直接將 DataFrame 的列分配給空字串,NaN 值或空 Pandas Series,以在 Pandas 中建立一個空列。

import pandas as pd
import numpy as np

dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]

df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})

df["Empty_1"] = ""
df["Empty_2"] = np.nan
df["Empty_3"] = pd.Series()

print(df)

輸出:

       Date  Income  Expenses Empty_1  Empty_2  Empty_3
0  April-20      10         3              NaN      NaN
1  April-21      20         8              NaN      NaN
2  April-22      10         4              NaN      NaN
3  April-23      15         5              NaN      NaN
4  April-24      10         6              NaN      NaN
5  April-25      12        10              NaN      NaN

它在 df 中建立三個空列。為 Empty_1 列分配空字串,為 Empty_2 分配 NaN 值,為 Empty_3 分配一個空 Pandas Series,這也將導致整個 Empty_3 的值為 NaN。

在 Pandas 中用 pandas.DataFrame.reindex() 方法新增一個空列

我們可以使用 pandas.DataFrame.reindex() 方法向 Pandas 中的 DataFrame 新增多個空列。

import pandas as pd
import numpy as np

dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]

df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})

column_names = ["Empty_1", "Empty_2", "Empty_3"]

df = df.reindex(columns=column_names)
print(df)

輸出:

   Empty_1  Empty_2  Empty_3
0      NaN      NaN      NaN
1      NaN      NaN      NaN
2      NaN      NaN      NaN
3      NaN      NaN      NaN
4      NaN      NaN      NaN
5      NaN      NaN      NaN

該程式碼在 df 中使用所有 NaN 值建立了新列 Empty_1,Empty_2,Empty_3,而所有舊資訊都丟失了。

要在保留初始列的同時新增多個新列,我們可以編寫如下程式碼:

import pandas as pd
import numpy as np

dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]

df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})

df = df.reindex(columns=df.columns.tolist() + ["Empty_1", "Empty_2", "Empty_3"])
print(df)

輸出:

       Date  Income  Expenses  Empty_1  Empty_2  Empty_3
0  April-20      10         3      NaN      NaN      NaN
1  April-21      20         8      NaN      NaN      NaN
2  April-22      10         4      NaN      NaN      NaN
3  April-23      15         5      NaN      NaN      NaN
4  April-24      10         6      NaN      NaN      NaN
5  April-25      12        10      NaN      NaN      NaN

這樣會在保留初始資訊的情況下向 df 新增空列 Empty_1,Empty_2 和 Empty_3。

pandas.DataFrame.assign() 在 Pandas DataFrame 中新增一個空列

我們可以使用 pandas.DataFrame.assign() 方法向其中 Pandas 中的 DataFrame 新增一個空列。

import pandas as pd
import numpy as np

dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]

df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})

df = df.assign(Empty_1="", Empty_2=np.nan)
print(df)

輸出:

       Date  Income  Expenses Empty_1  Empty_2
0  April-20      10         3              NaN
1  April-21      20         8              NaN
2  April-22      10         4              NaN
3  April-23      15         5              NaN
4  April-24      10         6              NaN
5  April-25      12        10              NaN

它將建立一個名為 Empty_1 和 Empty_2 的空列,僅在 df 中包含 NaN 值。

pandas.DataFrame.insert() 將空列新增到 DataFrame

pandas.DataFrame.insert() 允許我們在 DataFrame 中插入列指定位置。我們可以使用此方法向 DataFrame 新增一個空列。

語法:

DataFrame.insert(loc, column, value, allow_duplicates=False)

它在位置 loc 處建立一個名稱為 column 的新列,預設值為 value。allow_duplicates = False 確保 DataFrame 中只有一列名為 column 的列。如果我們傳遞一個空字串或 NaN 值作為值引數,則可以向 DataFrame 新增一個空列。

import pandas as pd
import numpy as np

dates = ["April-20", "April-21", "April-22", "April-23", "April-24", "April-25"]
income = [10, 20, 10, 15, 10, 12]
expenses = [3, 8, 4, 5, 6, 10]

df = pd.DataFrame({"Date": dates, "Income": income, "Expenses": expenses})
df.insert(3, "Empty_1", "")
df.insert(4, "Empty_2", np.nan)
print(df)

輸出:

       Date  Income  Expenses Empty_1  Empty_2
0  April-20      10         3              NaN
1  April-21      20         8              NaN
2  April-22      10         4              NaN
3  April-23      15         5              NaN
4  April-24      10         6              NaN
5  April-25      12        10              NaN

它在 df 中建立 Empty_1 列,並在索引 3 處建立所有空值,並在索引 4 處建立具有所有 NaN 值的 Empty_2。