사이드 :
나는 25000 개 행이 CSV 파일을 가지고있다. 나는 다른 csv 파일의 모든 30 행의 평균을 넣고 싶다.
나는 아래로 9 행으로 예를 준 새로운 CSV 파일은 3 개 행이 (3, 1, 2) :
| H |
========
| 1 |---\
| 3 | |------------->| 3 |
| 5 |---/
| -1 |---\
| 3 | |------------->| 1 |
| 1 |---/
| 0 |---\
| 5 | |------------->| 2 |
| 1 |---/
제가 한:
import numpy as np
import pandas as pd
m_path = "ALL0001.CSV"
m_df = pd.read_csv(m_path, usecols=['Col-01'])
m_arr = np.array([])
temp = m_df.to_numpy()
step = 30
for i in range(1, 25000, step):
arr = np.append(m_arr,np.array([np.average(temp[i:i + step])]))
data = np.array(m_arr)[np.newaxis]
m_df = pd.DataFrame({'Column1': data[0, :]})
m_df.to_csv('AVG.csv')
이 잘 작동하지만 더 나은 솔루션이있다?
이스 르엘 :
다음과 같은 방법으로 정수 나누기를 사용하여 step
연속적인 그룹과에 전달 groupby
골재 mean
:
step = 30
m_df = pd.read_csv(m_path, usecols=['Col-01'])
df = m_df.groupby(m_df.index // step).mean()
또는:
df = m_df.groupby(np.arange(len(dfm_df// step).mean()
샘플 데이터 :
step = 3
df = m_df.groupby(m_df.index // step).mean()
print (df)
H
0 3
1 1
2 2