HOWTO · Pandas

遍歷 Pandas DataFrame 的列

本教程演示瞭如何在 Dataframe 的列中進行遍歷。

本頁內容

DataFrames 可以非常大,可以包含數百行和列。有必要對 DataFrame 中的列進行遍歷,並對列進行單獨的操作,如迴歸和許多其他操作。

我們可以使用 for 迴圈來遍歷 DataFrame 的列。for 迴圈的基本語法如下。

for value in sequence:
    # Body of Loop

我們可以使用多種方法在 DataFrame 上執行 for 迴圈,例如,getitem 語法([])、dataframe.iteritems() 函式、enumerate() 函式和使用 DataFrame 的索引。

使用 getitem ([])語法在列上遍歷 Pandas

我們可以使用列標籤,使用 getitem 語法([])在 DataFrame 上執行 for 迴圈。例如,我們可以使用列標籤在 DataFrame 上執行 for 迴圈。

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

print(df)
print("------------------")
for column in df:
    print(df[column].values)

輸出:

    a  b   c   d
0  10  6   7   8
1   1  9  12  14
2   5  8  10   6
------------------
[10  1  5]
[6 9 8]
[ 7 12 10]
[ 8 14  6]

values() 函式用於將物件的元素提取為列表。

使用 dataframe.iteritems() 遍歷 Pandas Dataframe 的列

Pandas 提供了 dataframe.iteritems() 函式,該函式有助於對 DataFrame 進行遍歷,並將列名及其內容作為系列返回。

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

for (colname, colval) in df.iteritems():
    print(colname, colval.values)

輸出:

a [10  1  5]
b [6 9 8]
c [ 7 12 10]
d [ 8 14  6]

使用 enumerate() 遍歷 Pandas Dataframe 的列

enumerate() 與 DataFrame 一起返回索引和列標籤,這使我們能夠對其進行遍歷。

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

for (index, colname) in enumerate(df):
    print(index, df[colname].values)

輸出:

0 [10  1  5]
1 [6 9 8]
2 [ 7 12 10]
3 [ 8 14  6]

我們可以非常有效地使用上述任何一種方法來遍歷 DataFrame。我們還可以單獨在列上執行迴歸等操作。例如,我們可以將最後一列設定為自變數,並將其他列作為因變數執行 OLS 迴歸,如下例所示。

import pandas as pd
import statsmodels.api as sm
import numpy as np

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

for column in df:
    Y = df["d"]
    X = df[column]
    X = sm.add_constant(X)
    model = sm.OLS(X, Y)
    results = model.fit()
    print(results.params)

輸出:

          0         1
d  0.094595  0.418919
          0     1
d  0.094595  0.75
          0         1
d  0.094595  0.959459
          0    1
d  0.094595  1.0