DataFrame에서 누락 된 행을 생성 / 채우는 방법은 무엇입니까?

MarkBC

기차 당 초당 에너지 사용량을 포함하는 데이터 파일이 있지만 데이터 파일을 생성 한 응용 프로그램은 에너지 사용을 위해 0이있는 모든 행을 제거했으며 해당 행을 다시 만들어야합니다.

특히 필요합니다. 모든 열차 번호에 대해 기록을 추가해야하는 경우 에너지에 0을 사용하여 초당 적어도 하나의 기록이 있는지 확인합니다.

내 초기 DataFrame은 다음과 같습니다 (초는 자정 이후 초 단위의 타임 스탬프입니다).

           train  seconds    energy   
0           1024    13980  105.0000   
1           1024    14745  114.0000   
2           1024    14746  127.0100 
3           1024    14747  137.5667 
...          ...      ...       ...      
4284449     7564    95495 -301.6824   
4284450     7564    95496 -181.0630   
4284451     7564    95497  -60.3713  

14745-13980 = 765 초의 행 0과 행 1 사이에 시간 간격이 있습니다. 우리가 아는 한, 모든 열차에 대한 초당 레코드의 유일한 간격은 첫 번째와 두 번째 레코드 사이에 있으며, 초 값의 차이에서 얼마나 많은 것이 누락되었는지 알 수 있습니다. 그러나 모든 열차에 대해 누락 된 초마다 하나의 행이 있어야하므로 누락 된 값만 첫 번째와 두 번째 레코드 사이에 있다고 가정하지 않는 것이 가장 좋습니다.

내 계획은 :

  1. 기차별로 그룹화하여 기차 당 최소 및 최대 초를 확인합니다.
  2. 각 열차에 대해 Train & arange (min, max)의 곱에서 새 DataFrame을 생성합니다. 이렇게하면 모든 열차와 열차 당 초마다 데이터 프레임이 제공되며 에너지 열은 없습니다.
  3. 이전에 없었던 모든 행에 대한 에너지에 대한 NA 값이있는 원본 데이터 프레임의 새 DataFrome 왼쪽 병합을 수행합니다.
  4. 모든 NA 에너지 값을 0으로 바꾸면 완료됩니다.

1 단계:

# Get the minimum and maximum seconds value per train   
df = df_datafile.groupby(['train'])['seconds'].agg(['min', 'max']).rename(
                         columns={'min': 'minsec', 'max': 'maxsec'})

결과 :

              minsec  maxsec
    train                
    1001       21923   25302
    1003       22825   26197
    1005       23736   27207
    1007       24620   28009
    1011       25548   28889
    ...          ...     ...
    VIAE858    52785   53380
    VIAE87     53442   54262
    VIAE88     83204   85785
    VIAE97     21942   27054
    VIAE98     71123   73186

2 단계:

# Create one (train, second) record for every second of every train 
df = DataFrame([product(*[[train], arange(minsec, maxsec)])
               for train, minsec, maxsec in list(zip(df.index, df.minsec, df.maxsec))])

결과 :

                 0                 1                 2      ... 35403 35404 35405
0        (1001, 21923)     (1001, 21924)     (1001, 21925)  ...  None  None  None
1        (1003, 22825)     (1003, 22826)     (1003, 22827)  ...  None  None  None
2        (1005, 23736)     (1005, 23737)     (1005, 23738)  ...  None  None  None
3        (1007, 24620)     (1007, 24621)     (1007, 24622)  ...  None  None  None
4        (1011, 25548)     (1011, 25549)     (1011, 25550)  ...  None  None  None
...                ...               ...               ...  ...   ...   ...   ...
2561  (VIAE858, 52785)  (VIAE858, 52786)  (VIAE858, 52787)  ...  None  None  None
2562   (VIAE87, 53442)   (VIAE87, 53443)   (VIAE87, 53444)  ...  None  None  None
2563   (VIAE88, 83204)   (VIAE88, 83205)   (VIAE88, 83206)  ...  None  None  None
2564   (VIAE97, 21942)   (VIAE97, 21943)   (VIAE97, 21944)  ...  None  None  None
2565   (VIAE98, 71123)   (VIAE98, 71124)   (VIAE98, 71125)  ...  None  None  None

[2566 rows x 35406 columns]

모든 None 값은 가장 긴 기차의 길이가 35406 초이고 Dataframe의 다른 모든 레코드가 해당 행의 열 수와 일치해야한다는 사실 때문입니다. 이러한 없음 값은 제거해야합니다.

하지만 지금은 붙어 있습니다. 내가 얻고 싶은 것은 :

         train seconds   
0        1001  21923 
1        1001  21924 
2        1001  21925
...      ...     ...
???    VIAE98  71123
???    VIAE98  71124
???    VIAE98  71125

효과적으로 각 개별 행이 전치되었으며 (개별 목록이 확장되고 널 요소가 제거됨) 전치 된 모든 행이 2 개 열로 구성된 하나의 긴 데이터 프레임으로 연결되었습니다.

이 마지막 단계를 도와 주실 수 있으신가요? 그리고 / 또는 원래 문제 설명을 할 수있는 다른 방법을 알려주 시겠어요 (처음에 기울임 꼴로 표시).

도움을 주셔서 대단히 감사합니다. StackOverflow 질문에 답 해주신 모든 분들께 정말 감사드립니다.

마크 배튼-캐류

Cainã Max Couto-Silva

당신은 사용할 수 reindex복용 minmax기차 그룹 초마다 :

def populate_df(grp):
    grp = (grp.set_index('seconds')
           .reindex(range(grp.seconds.min(), grp.seconds.max()+1))
           .drop(columns='train')
           .fillna(0)
          )
    return grp

df.groupby('train').apply(populate_df).reset_index()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SataFrame에서 누락 된 값을 채우는 방법은 무엇입니까?

분류에서Dev

누락 된 NAN을 채우는 방법은 무엇입니까?

분류에서Dev

SQl Server에서 누락 된 행으로 인해 결과 집합을 채우는 방법은 무엇입니까?

분류에서Dev

Pandas : 대규모 데이터 세트에서 누락 된 값을 채우는 방법은 무엇입니까?

분류에서Dev

R에서 맵의 흰색 / 누락 된 부분을 채우는 방법은 무엇입니까?

분류에서Dev

실행 파일에 대한 누락 된 종속성을 감지하는 방법은 무엇입니까?

분류에서Dev

실행 파일에 대한 누락 된 종속성을 감지하는 방법은 무엇입니까?

분류에서Dev

Dymola에서 누락 된 방정식을 찾는 방법은 무엇입니까?

분류에서Dev

Pandas DataFrame에서 누락 된 시간 값을 채우는 방법

분류에서Dev

mvn으로 Eclipse에서 누락 된 종속성을 해결하는 방법은 무엇입니까?

분류에서Dev

시퀀스에서 누락 된 항목을 가져 와서 ID를 생성하는 함수를 작성하는 방법은 무엇입니까?

분류에서Dev

useEffect에 누락 된 종속성을 포함하지만 함수의 무한 루프 실행을 방지하는 방법은 무엇입니까?

분류에서Dev

SQL 테이블에서 누락 된 행을 가져 오는 방법은 무엇입니까?

분류에서Dev

사전 훈련 된 모델을 사용하여 누락 된 값을 채우는 방법은 무엇입니까?

분류에서Dev

그룹화 된 평균을 기준으로 누락 된 값을 채우는 방법은 무엇입니까?

분류에서Dev

누락 된 날짜를 데이터 프레임에 추가하고 Python에서 다른 해당 열을 채우는 방법은 무엇입니까?

분류에서Dev

열의 패턴에 따라 Pandas 데이터 프레임에서 누락 된 값을 채우는 방법은 무엇입니까?

분류에서Dev

BigQuery에서 선형 보간으로 불규칙적으로 누락 된 값을 채우는 방법은 무엇입니까?

분류에서Dev

Pandas : 다중 인덱스 시계열에서 누락 된 기간 / 날짜 / 시간 값을 채우는 방법은 무엇입니까?

분류에서Dev

누락 된 값을 전날 값으로 채우는 방법은 무엇입니까? (dplyr -spread 사용)

분류에서Dev

순차 달력에서 판매 기록에 누락 된 행을 채우는 방법이 있습니까?

분류에서Dev

일부 속성이 누락 된 경우 XML을 객체로 변환하는 방법은 무엇입니까?

분류에서Dev

R에서 data.frame의 누락 값을 채우는 방법은 무엇입니까?

분류에서Dev

json에서 누락 된 속성에 대한 postgres json 쿼리를 작성하는 방법은 무엇입니까?

분류에서Dev

Bigquery 테이블 범위 쿼리에서 누락 된 열을 '무시'하는 방법은 무엇입니까?

분류에서Dev

다른 데이터 프레임에서 값이 누락 된 경우 한 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?

분류에서Dev

작성자가 누락 된 모든 커밋을 한 분기에서 다른 분기로 체리 픽하는 좋은 방법은 무엇입니까?

분류에서Dev

Java import 문에서 누락 된 기호를 올바르게 구성하는 방법은 무엇입니까?

분류에서Dev

응답 성을 유지하면서 플로팅 된 이미지 옆에 단락의 텍스트 나누기를 방지하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    SataFrame에서 누락 된 값을 채우는 방법은 무엇입니까?

  2. 2

    누락 된 NAN을 채우는 방법은 무엇입니까?

  3. 3

    SQl Server에서 누락 된 행으로 인해 결과 집합을 채우는 방법은 무엇입니까?

  4. 4

    Pandas : 대규모 데이터 세트에서 누락 된 값을 채우는 방법은 무엇입니까?

  5. 5

    R에서 맵의 흰색 / 누락 된 부분을 채우는 방법은 무엇입니까?

  6. 6

    실행 파일에 대한 누락 된 종속성을 감지하는 방법은 무엇입니까?

  7. 7

    실행 파일에 대한 누락 된 종속성을 감지하는 방법은 무엇입니까?

  8. 8

    Dymola에서 누락 된 방정식을 찾는 방법은 무엇입니까?

  9. 9

    Pandas DataFrame에서 누락 된 시간 값을 채우는 방법

  10. 10

    mvn으로 Eclipse에서 누락 된 종속성을 해결하는 방법은 무엇입니까?

  11. 11

    시퀀스에서 누락 된 항목을 가져 와서 ID를 생성하는 함수를 작성하는 방법은 무엇입니까?

  12. 12

    useEffect에 누락 된 종속성을 포함하지만 함수의 무한 루프 실행을 방지하는 방법은 무엇입니까?

  13. 13

    SQL 테이블에서 누락 된 행을 가져 오는 방법은 무엇입니까?

  14. 14

    사전 훈련 된 모델을 사용하여 누락 된 값을 채우는 방법은 무엇입니까?

  15. 15

    그룹화 된 평균을 기준으로 누락 된 값을 채우는 방법은 무엇입니까?

  16. 16

    누락 된 날짜를 데이터 프레임에 추가하고 Python에서 다른 해당 열을 채우는 방법은 무엇입니까?

  17. 17

    열의 패턴에 따라 Pandas 데이터 프레임에서 누락 된 값을 채우는 방법은 무엇입니까?

  18. 18

    BigQuery에서 선형 보간으로 불규칙적으로 누락 된 값을 채우는 방법은 무엇입니까?

  19. 19

    Pandas : 다중 인덱스 시계열에서 누락 된 기간 / 날짜 / 시간 값을 채우는 방법은 무엇입니까?

  20. 20

    누락 된 값을 전날 값으로 채우는 방법은 무엇입니까? (dplyr -spread 사용)

  21. 21

    순차 달력에서 판매 기록에 누락 된 행을 채우는 방법이 있습니까?

  22. 22

    일부 속성이 누락 된 경우 XML을 객체로 변환하는 방법은 무엇입니까?

  23. 23

    R에서 data.frame의 누락 값을 채우는 방법은 무엇입니까?

  24. 24

    json에서 누락 된 속성에 대한 postgres json 쿼리를 작성하는 방법은 무엇입니까?

  25. 25

    Bigquery 테이블 범위 쿼리에서 누락 된 열을 '무시'하는 방법은 무엇입니까?

  26. 26

    다른 데이터 프레임에서 값이 누락 된 경우 한 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?

  27. 27

    작성자가 누락 된 모든 커밋을 한 분기에서 다른 분기로 체리 픽하는 좋은 방법은 무엇입니까?

  28. 28

    Java import 문에서 누락 된 기호를 올바르게 구성하는 방법은 무엇입니까?

  29. 29

    응답 성을 유지하면서 플로팅 된 이미지 옆에 단락의 텍스트 나누기를 방지하는 방법은 무엇입니까?

뜨겁다태그

보관