遍历 Pandas DataFrame 的列

Manav Narula 2023年1月30日
  1. 使用 getitem ([])语法在列上遍历 Pandas
  2. 使用 dataframe.iteritems() 遍历 Pandas Dataframe 的列
  3. 使用 enumerate() 遍历 Pandas Dataframe 的列
遍历 Pandas 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
作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相关文章 - Pandas DataFrame