아래 코드를 사용하여 Panda 비닝 프로세스에서 파생 된 여러 DF가 있습니다.
df2 = df.resample(rule=timedelta(milliseconds=250))[('diffA')].mean().dropna()
df3 = df.resample(rule=timedelta(milliseconds=250))[('diffB')].mean().dropna()
.. 등
모든 DF에는 Datetime 형식 (예 : 2019-11-22 13 : 18 : 00.000)의 '시간'이 포함 된 열과 숫자 (예 : 0.06)가 포함 된 두 번째 열이 있습니다. 다른 DF는 다른 '시간'빈을 갖습니다. 결과 DF의 특정 요소에 'NaN'이 포함될 수있는 모든 DF를 하나로 연결하려고합니다. DF의 Datetime 형식은 사용할 때 오류를 제공합니다.
방법 1) df4=pd.merge(df2,df3,left_on='time',right_on='time')
방법 2) pd.pivot_table(df2, values = 'diffA', index=['time'], columns = 'time').reset_index()
DF가 결합되면 결과 DF도 전치하고 싶습니다.
행 : are 'DiffA', 'DiffB'.. etc 열 : 그에 따른 시간 빈입니다.
시도하기 위해 개별 DF로 transpose () 메서드를 시도했지만 내 시간 / index가 'Datetime'형식이므로 오류가 발생합니다.
그것이 제자리에 있으면 결과로 전치 된 DF에서 개별 데이터 시리즈로 행을 추출하는 방법을 찾고 있습니다.
위의 내용을 지침으로 어떻게 달성 할 수 있는지 조언하고 피드백에 감사드립니다! 도와 주셔서 정말 감사합니다.
데이터 프레임 (예 : 2 개)
time DiffA
2019-11-25 08:18:01.250 0.06
2019-11-25 08:18:01.500 0.05
2019-11-25 08:18:01.750 0.04
2019-11-25 08:18:02.000 0
2019-11-25 08:18:02.250 0.22
2019-11-25 08:18:02.500 0.06
time DiffB
2019-11-26 08:18:01.250 0.2
2019-11-27 08:18:01.500 0.05
2019-11-25 08:18:01.000 0.6
2019-11-25 08:18:02.000 0.01
2019-11-25 08:18:02.250 0.8
2019-11-25 08:18:02.500 0.5
결과적으로 병합 된 DF는 다음과 같아야합니다 (텍스트 전용).
time ( first row )
2019-11-25 08:18:01.000,
2019-11-25 08:18:01.250,
2019-11-25 08:18:01.500,
2019-11-25 08:18:01.750,
2019-11-25 08:18:02.000,
2019-11-25 08:18:02.250,
2019-11-25 08:18:02.500,
2019-11-26 08:18:01.250,
2019-11-27 08:18:01.500
(두 번째 행)
diffA nan 0.06 0.05 0.04 0 0.22 0.06 nan nan
(세 번째 행)
diffB 0.6 nan nan nan 0.01 0.8 0.5 0.2 0.05
핵심 논리 : 목표를 달성 하려면 각 샘플링 데이터 프레임 에 대한 열의 외부 조인 을 함께 사용해야합니다. 마지막으로 인덱스를 열 시간 으로 재설정하면 솔루션이 완료됩니다.'time'
merge
아래에서 만든 더미 데이터를 사용하여 재현 가능한 솔루션을 만듭니다.
참고 :
df
최종 데이터 프레임과df0
원본 데이터 프레임으로 사용했습니다. 내가df0
당신입니다df
.
df = pd.DataFrame()
for i, column_name in zip(range(5), column_names):
if i==0:
df = df0.sample(n=10, random_state=i).rename(columns={'data': f'df{column_name}'})
else:
df_other = df0.sample(n=10, random_state=i).rename(columns={'data': f'df{column_name}'})
df = pd.merge(df, df_other, on='time', how='outer')
print(df.set_index('time').T)
출력 :
import pandas as pd
# dummy data:
df0 = pd.DataFrame()
df0['time'] = pd.date_range(start='2020-02-01', periods=15, freq='D')
df0['data'] = np.random.randint(0, high=9, size=15)
print(df0)
산출:
time data
0 2020-02-01 6
1 2020-02-02 1
2 2020-02-03 7
3 2020-02-04 0
4 2020-02-05 8
5 2020-02-06 8
6 2020-02-07 1
7 2020-02-08 6
8 2020-02-09 2
9 2020-02-10 6
10 2020-02-11 8
11 2020-02-12 3
12 2020-02-13 0
13 2020-02-14 1
14 2020-02-15 0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다