在 pandas 中每 4 行读取第二个值

问题描述 投票:0回答:1

我试图只读取 Excel 数据表中每 4 行的值(每个值对应于“media”)。我可以做到这一点,但我想从第 2 行开始读取每 4 行。或者从技术上讲,它将是第 2 行、第 6 行和第 10 行等。但无论我尝试什么,我都无法得到我想要的。 excel datafile

我尝试了从不同问题中发现的变体:

cols=[' estacion_id','estacion_nombre','sensor_id','sensor_alias','sensor_nombre','fecha_ observacio n','metrica','valor' ]  
f=pd.read_csv('env_picacho-ma_2013.csv', usecols=['fecha_observacion', 'valor'])

date=pd.read_csv('env_picacho-ma_2013.csv', usecols=['fecha_observacion'],skiprows=lambda x: logic(x)  )
temp=pd.read_csv('env_picacho-ma_2013.csv', usecols=['valor'],skiprows= lambda x:(x % 4))

这给了我每第四行: 勇气 0 7.7 1 8.4 2 4.7 3 6.8 4 8.2 …… 1820 791.0 1821 771.0 1822 841.0 1823 806.0 1824 795.0

我也尝试过:

def logic(index=0):

if index % 4 == 3:
    return True

return False

temp=pd.read_csv('env_picacho-ma_2013.csv', usecols=['valor'],skiprows= lambda x: logic(x))

这会跳过 4 行中的每第 3 行。所以我想我可以跳过第 1 行、第 3 行和第 4 行,以便只保留第 2 行。但这也不起作用:

def logic(index=0):

if index % 4 == 3 and index % 4== 2:
    return True

return False

再次给我所有的价值观。我可以理解为什么这行不通,因为我自相矛盾,但我不知道如何正确地做:

        valor

0 南 1 3.78417 2 0.60000 3 7.70000 4 南 …… 7295 806.00000 7296 20382.00000 第7297章 7298 南 7299 795.00000

然后我发现它每 5 行选择前 2 个值,但我不知道如何针对我的情况修改它(每 4 行每第二个值):

df.groupby(df.index//5).head(2)

我尝试了很多变体,我想我的另一个选择是循环,但我在编码循环方面很糟糕,所以如果有人能提供任何建议,我将不胜感激。 我想要的是: 勇气 0 3.78417 1 4.48482 2 2.38661 ...

pandas row read-csv
1个回答
0
投票

如何使用以下公式跳过除第一行(标题)之外的每一行以及不符合模式 2,6,10,14... 的行

def logic(index=0):
    if index==0: # keep the header row
        return False
    if (index+2) % 4 == 0: # keep every 4th row starting from row 2
        return False
    return True

date = pd.read_csv('env_picacho-ma_2013.csv', usecols=['fecha_observacion'],skiprows=lambda x: logic(x))
© www.soinside.com 2019 - 2024. All rights reserved.