Series 操作
1 | # 获取所有的值 |
按行遍历DataFrame
不修改内容
要以 Pandas 的方式迭代遍历DataFrame的行,可以使用:
1 | # 1、DataFrame.iterrows() |
itertuples()应该比iterrows()快
但请注意,根据文档(目前 Pandas 0.19.1):
df.iterrows:数据的dtype可能不是按行匹配的,因为iterrows返回一个系列的每一行,它不会保留行的dtypes(dtypes跨DataFrames列保留)*
iterrows:不要修改行,你不应该修改你正在迭代的东西。这不能保证在所有情况下都能正常工作。根据数据类型的不同,迭代器返回一个副本而不是一个视图,写入它将不起作用。
第二种方案: apply()
DataFrame.apply(),对每行的内容进行修改
1 | def valuation_formula(x, y): |
方案3:df.iloc函数
1 | for i in range(0, len(df)): |
第四种方案:略麻烦,但是更高效,将DataFrame转为List
可以编写自己的实现namedtuple的迭代器,这相当于pd.DataFrame.itertuples,但是效率更高。
1 | from collections import namedtuple |
1 | # 将自定义函数用于给定的DataFrame: |