簡體   English   中英

python pandas如何獲取每n行和每n行的數據?

[英]python pandas how to get data every n and every nth rows?

這個問題與每n行或每n行的pandas不同,請不要刪除它。

以下是我的表的一些行:

open    high    low close   volume  datetime
277.14  277.51  276.71  276.8799    968908  2020-04-13 08:31:00.000
245.3   246.06  245.2   246.01  1094537 2020-04-13 08:32:00.000
285.12  285.27  284.81  285.22  534427  2020-04-13 08:33:00.000
246.08  246.08  245.27  245.46  1333257 2020-04-13 08:34:00.000
291.71  291.73  291.08  291.28  1439183 2020-04-13 08:35:00.000
245.89  246.63  245.64  246.25  960411  2020-04-13 08:36:00.000
285.18  285.4   285 285.36  188531  2020-04-13 08:30:37.000
285.79  285.79  285.65  285.68  6251    2020-04-13 08:38:00.000
246.25  246.56  246.12  246.515 956339  2020-04-13 08:39:00.000

我想每3行,〔實施例,

第一次得到:1st,2end,3rd 行,

2end 時間獲取:2end,3rd,4th 行,

第三次獲得:第 3、4、5 行,

第 4 次獲得:第 4、5、6 行。

我可以使用 Pandas 或 python 來獲得這個的任何好方法。謝謝。

.shift()做你想做的嗎?

import pandas as pd

df = pd.DataFrame({'w': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]})

df['x'] = df['w'].shift( 0)
df['y'] = df['w'].shift(-1)
df['z'] = df['w'].shift(-2)

print(df)

     w    x      y      z
0   10   10   20.0   30.0
1   20   20   30.0   40.0
2   30   30   40.0   50.0
3   40   40   50.0   60.0
4   50   50   60.0   70.0
5   60   60   70.0   80.0
6   70   70   80.0   90.0
7   80   80   90.0  100.0
8   90   90  100.0    NaN
9  100  100    NaN    NaN

使用帶有iloc生成器來選擇所需的行:

def rows_generator(df):
    i = 0
    while (i+3) <= df.shape[0]:
        yield df.iloc[i:(i+3):1, :]
        i += 1

i = 1
for df in rows_generator(df):
    print(f'Time #{i}')
    print(df)
    i += 1

示例輸出:

Time #1
    Group   Cat  Value
0  Group1  Cat1   1230
1  Group2  Cat2   4019
2  Group3  Cat3   9491
Time #2
    Group   Cat  Value
1  Group2  Cat2   4019
2  Group3  Cat3   9491
3  Group4  Cat4   9588
Time #3
    Group   Cat  Value
2  Group3  Cat3   9491
3  Group4  Cat4   9588
4  Group5  Cat5   6402
Time #4
    Group   Cat  Value
3  Group4  Cat4   9588
4  Group5  Cat5   6402
5  Group6   Cat   1923
Time #5
    Group   Cat  Value
4  Group5  Cat5   6402
5  Group6   Cat   1923
6  Group7  Cat7    492
Time #6
    Group   Cat  Value
5  Group6   Cat   1923
6  Group7  Cat7    492
7  Group8  Cat8   8589
Time #7
    Group   Cat  Value
6  Group7  Cat7    492
7  Group8  Cat8   8589
8  Group9  Cat9   8582

以下應該工作:

for i in range(len(df)-2):
    result=df.iloc[i:i+3, :]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM