我试图只读取 Excel 数据表中每 4 行的值(每个值对应于“media”)。我可以做到这一点,但我想从第 2 行开始读取每 4 行。或者从技术上讲,它将是第 2 行、第 6 行和第 10 行等。但无论我尝试什么,我都无法得到我想要的。
我尝试了从不同问题中发现的变体:
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 ...
如何使用以下公式跳过除第一行(标题)之外的每一行以及不符合模式 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))