使用 for 循环可以遍历 DataFrame 中的每一行或每一列。需要使用 iterrows() 方法遍历每一行,或者使用 iteritems() 方法遍历每一列。
代码如下:
- import pandas as pd
-
- # 创建 DataFrame
- data = {
- 'name': ['Alice', 'Bob', 'Charlie'],
- 'age': [25, 30, 35],
- 'gender': ['F', 'M', 'M']
- }
- df = pd.DataFrame(data)
-
- # 遍历每一行
- for index, row in df.iterrows():
- print(f"Index: {index}, Row: {row['name']}, {row['age']}, {row['gender']}")
-
- # 遍历每一列
- for column, value in df.iteritems():
- print(f"Column: {column}")
- print(value)
-
apply() 方法可以应用一个函数到 DataFrame 中的每一个元素,返回一个新的 DataFrame。
- import pandas as pd
-
- # 创建 DataFrame
- data = {
- 'name': ['Alice', 'Bob', 'Charlie'],
- 'age': [25, 30, 35],
- 'gender': ['F', 'M', 'M']
- }
- df = pd.DataFrame(data)
-
- # 定义一个函数,对每一个元素加 1
- def add_one(x):
- return x + 1
-
- # 应用函数到 DataFrame
- df_new = df.apply(add_one)
- print(df_new)
-
- import pandas as pd
-
- df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
-
- df["C"] = df["B"].apply(lambda x: x * 2)
-
输出结果如下:
- A B C
- 0 1 3 6
- 1 2 4 8
-
其中,apply方法接受一个函数作为参数,该函数的输入是该列的每一个值,输出是计算结果。
applymap() 方法可以应用一个函数到 DataFrame 中的每一个元素,返回一个新的 DataFrame。
- import pandas as pd
-
- # 创建 DataFrame
- data = {
- 'name': ['Alice', 'Bob', 'Charlie'],
- 'age': [25, 30, 35],
- 'gender': ['F', 'M', 'M']
- }
- df = pd.DataFrame(data)
-
- # 定义一个函数,对每一个元素加 1
- def add_one(x):
- return x + 1
-
- # 应用函数到 DataFrame
- df_new = df.applymap(add_one)
- print(df_new)
-
map() 方法可以应用一个函数到 Series 中的每一个元素,返回一个新的 Series。
- import pandas as pd
-
- # 创建 Series
- s = pd.Series([1, 2, 3])
-
- # 定义一个函数,对每一个元素加 1
- def add_one(x):
- return x + 1
-
- # 应用函数到 Series
- s_new = s.map(add_one)
- print(s_new)
-
pandas提供了多种方法来遍历DataFrame的行数据,主要有iterrows、itertuples和apply等。其中,iterrows方法返回一个迭代器,可以逐行遍历DataFrame,返回每一行数据的索引和值。它的基本使用方法如下:
- import pandas as pd
-
- df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
-
- for index, row in df.iterrows():
- print(index, row)
-
输出结果如下:
- 0 A 1
- B 3
- 1 A 2
- B 4
- dtype: int64
-
其中,index是每一行数据的索引,row是一个Series对象,表示该行数据。我们可以通过row[“列名”]或row.列名的方式来获取指定列的值。
iteritems()方法以 (列标签,列) 的形式遍历 DataFrame 的列。它返回一个迭代器,其中每个元素都是一个元组,元组中包含列标签和对应列的 Pandas Series。
例如:
- for col_label, column in df.iteritems():
- print(col_label)
- print(column)
-
itertuples()方法以命名元组的形式遍历 DataFrame 的行。返回的每个命名元组都代表 DataFrame 中的一行。这种方法比 iterrows() 更快。
示例如下:
- for row in df.itertuples(index=False):
- print(row)
-
- import pandas as pd
-
- df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
-
- for row in df.itertuples():
- print(row.Index, row.A, row.B)
-
总的来说,对于大型的 Pandas DataFrame,应该尽量避免使用循环遍历,而是使用 Pandas 内置的方法,如 apply() 和 applymap() 等。这些方法能够更快速、高效地操作 DataFrame。