遍历熊猫的前N行

时间:2018-12-20 16:51:04

标签: python pandas

建议像在文件中那样迭代熊猫中的行的建议方法是什么?例如:

LIMIT = 100
for row_num, row in enumerate(open('file','r')):
    print (row)
    if row_num == LIMIT: break

我正在考虑做类似的事情:

for n in range(LIMIT):
    print (df.loc[n].tolist())

虽然在熊猫中有内置的方法来做到这一点?

7 个答案:

答案 0 :(得分:2)

您可以islice迭代器iterrows(或itertuples)产生。

from itertools import islice
LIMIT = 100

# iterrows and unpacking
for idx, data in islice(df.iterrows(), LIMIT):
    # do stuff

# itertuples, no unpacking
for row in islice(df.itertuples(), LIMIT):
    # do stuff

答案 1 :(得分:1)

您有valuesitertuplesiterrows,其中itertuplesfast-pandas基准测试中表现最好。

enter image description here

答案 2 :(得分:1)

由于您说过要使用以下内容,如果我愿意执行以下操作:

limit = 2
df = pd.DataFrame({"col1": [1,2,3], "col2": [4,5,6], "col3": [7,8,9]})
df[:limit].loc[df["col3"] == 7]

这将选择数据帧的前两行,然后从前两行中返回col3的值等于7的行。要使用{{1}仅在非常特殊的情况下。否则,可以对解决方案进行矢量化处理。

我不知道您到底想达到什么目的,所以我只举了一个随机的例子。

答案 3 :(得分:1)

没有人回答简单的解决方案吗?

for row in df.head(5).itertuples():
    # do something

窥视this post

答案 4 :(得分:0)

如果必须遍历数据框,则应使用iterrows()方法:

for index, row in df.iterrows():
    ...

答案 5 :(得分:0)

您可以使用xiterools.islice中提取头n项:

iterrows

答案 6 :(得分:0)

我知道其他人建议使用itlocrows,但还没有人建议将iloc与iterrows结合使用。这将允许您通过行号选择所需的行:

for i, row in df.iloc[:101].iterrows():
    print(row)

尽管其他人已经指出,如果速度必不可少,那么应用功能或矢量化功能可能会更好。