Pandas按行遍历DataFrame的3种方法
【摘要】 Pandas按行遍历DataFrame的3种方法
Pandas按行遍历DataFrame的3种方法
import pandas as pd
import numpy as np
import collections
df = pd.DataFrame(
np.random.random(size=(100000, 4)),
columns=list('ABCD')
)
df.head(3)
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
A | B | C | D | |
---|---|---|---|---|
0 | 0.897179 | 0.704997 | 0.419893 | 0.457423 |
1 | 0.307077 | 0.575940 | 0.719469 | 0.064899 |
2 | 0.018989 | 0.394548 | 0.631148 | 0.439461 |
df.shape
(100000, 4)
1. df.iterrows()
使用方式
for idx, row in df.iterrows():
print(idx, row)
print(idx, row["A"], row["B"], row["C"], row["D"])
break
0 A 0.897179
B 0.704997
C 0.419893
D 0.457423
Name: 0, dtype: float64
0 0.8971793669135368 0.7049968562422332 0.419892758556462 0.45742342531816327
时间耗费
%%time
result = collections.defaultdict(int)
for idx, row in df.iterrows():
result[(row["A"], row["B"])] += row["A"] + row["B"]
Wall time: 8.43 s
2. df.itertuples()
使用方式
for row in df.itertuples():
print(row)
print(row.Index, row.A, row.B, row.C, row.D)
break
Pandas(Index=0, A=0.8971793669135368, B=0.7049968562422332, C=0.419892758556462, D=0.45742342531816327)
0 0.8971793669135368 0.7049968562422332 0.419892758556462 0.45742342531816327
时间耗费
%%time
result = collections.defaultdict(int)
for row in df.itertuples():
result[(row.A, row.B)] += row.A + row.B
Wall time: 327 ms
3. for+zip
使用方式
# 既不需要类型检查,也不需要构建namedtuple
# 缺点是需要挨个指定变量
for A, B in zip(df["A"], df["B"]):
print(A, B)
break
0.8971793669135368 0.7049968562422332
时间耗费
%%time
result = collections.defaultdict(int)
for A, B in zip(df["A"], df["B"]):
result[(A, B)] += A + B
Wall time: 166 ms
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)