繁体   English   中英

在Python中对数据框进行切片和迭代

[英]Slicing and iterating over a dataframe in Python

我有一个看起来像这样的DataFrame:

    Date    Sell    Buy
    43016.49372 52.04   52.76
    43016.4936  52.04   52.76
    43016.49343 52.01   52.73
    43016.49339 52.02   52.74
    43016.49288 52.01   52.73
    43016.49278 52.02   52.74
    43016.4923  52.01   52.73
    43016.49217 52.06   52.78
    43016.49194 52.06   52.78
    43016.4917  52.06   52.78
    43016.49162 52.06   52.78

我想通过采用之前的最后10行为每一行创建一个DataFrame。 然后,我想进行一些计算,例如买入卖出。

我尝试了以下代码:

for row in original_df.iterrows():
    a = row
    b = row + 10
    slicing_test = original_df.iloc[a:b,]
    print(slicing_test)

还有这个:

for row in original_df.iterrows():
     slicing_test = original_df.iloc[row:row+1,] 

而且它不起作用。

您可以创建一个空数据集,然后尝试迭代地将其追加到下一行或前10行(请注意边界)。

row是您的for循环中的元组,您可以访问其第一个元素row-index:

for row in df.iterrows():
 a=row[0]
 b=a+10

 slicing_test = df.iloc[a:b,]
 print (slicing_test)

如果要显式地掌握窗口或要执行一些复杂的计算,则可以这样做:

offset = 10
for ind,_ in df.iterrows():
    print(df.iloc[ind:ind+offset,:])

但是,如果您要讨论的计算是一些主流计算,例如sum()或mean()或已在numpy库中定义,那么最好的方法是使用pandas.DataFrame.rolling 声明如下:

返回:为特定操作子类化的Window或Rolling子类

因此您可以以后使用.apply

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM