Pandas의 loc 내부에서 loc을 사용하여 값을 바꿀 수 있습니까?

Rik Hendrickx

먼저 해결하려는 문제를 스케치하겠습니다. '-1'을 포함하는 행의 다른 두 값을 기준으로 '-1'값을 같은 열의 다른 값으로 바꾸려고합니다. 더 명확하게하기 위해 여기에 예가 있습니다. 아래의 데이터 프레임에는 '소유자'열에 두 개의 누락 된 값이 있습니다. 내가 원하는 것은 각 '-1'값을 동일한 '가격'값을 갖고 '-1'값보다 '시간'에 더 일찍 발생하는 '소유자'열의 값으로 바꾸는 것입니다. 따라서이 예에서 첫 번째 -1값은 3 행에 있습니다. 해당하는 '가격'과 '시간'은 cheap2011-01-01 13:30:00입니다. 이제를 차를 -1소유 한 소유자의 이름 으로 바꾸고 싶습니다 cheap.2011-01-01 13:30:00. 이 경우 소유자 이름이 1 행에있는 것입니다 Jane. 다음 -1값 (예 : Bmw)에 대해서도 자동으로 수행되어야합니다 .

   brand   price time                 owner
0   Honda  cheap 2008-01-01 13:30:00  Marc
1  Toyota  cheap 2009-01-01 13:30:00  Jane
2    Ford   alot 2010-01-01 13:30:00  Phil
3    Audi  cheap 2011-01-01 13:30:00    -1
4   Volvo  cheap 2012-01-01 13:30:00  Jane
5     Bmw   alot 2013-01-01 13:30:00    -1

이 문제를 해결하고 싶었던 방법은 먼저 -1을 찾은 다음 해당 가격과 시간을 절약 한 다음 시간에 해당하는 첫 번째 가격을 찾아 소유자 값을 바꾸는 것입니다. 다음과 같은 방식으로 Pandas Loc 메서드를 사용하고 싶었습니다 (데이터 프레임을 만드는 코드도 포함했습니다).

import pandas as pd
from datetime import datetime

cars = {'brand': ['Honda','Toyota','Ford','Audi','Volvo','Bmw'],
        'price': ['cheap','cheap','alot','cheap','cheap','alot'],
        'time': [datetime.strptime('1/1/2008 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2009 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2010 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2011 1:30 PM', '%m/%d/%Y %I:%M %p'),
                 datetime.strptime('1/1/2012 1:30 PM', '%m/%d/%Y %I:%M %p'),datetime.strptime('1/1/2013 1:30 PM', '%m/%d/%Y %I:%M %p')],
        'owner': ['Marc', 'Jane','Phil','-1','Jane','-1']}

df = pd.DataFrame(cars, columns = ['brand', 'price','time','owner'])

P_T = df.loc[df.owner == '-1',['price','time']

df.loc[df.owner == '-1', 'owner'] = df.loc[(df.price == P_T.price)&(df.time < P_T.time), 'owner']

마지막 줄에서 볼 수 있듯이 이것은 본질적으로 loc 내의 loc이지만 방정식의 오른쪽에있는 조건은 둘 다 P_T loc을 기반으로합니다. 그러나, 여기에 문제가 있습니다. 계속해서이 오류가 발생합니다. ValueError: Can only compare identically-labeled Series objects제가 뭔가 잘못하고 있고 가능한 한 효율적이지 않은 일을하고 있다고 생각합니다 ... 그래서이 문제에 대해 도움을 주시면 감사하겠습니다.

마나 킨

나는 당신이 이것을 너무 복잡하다고 생각합니다-본질적으로해야 할 일은 -1가격 열로 그룹화 된 마지막 해당 값으로 값을 채우는 것 입니까? 그렇다면 앞으로 채우기가 할 것입니다ffill

import numpy as np
s = df.replace('-1',np.nan).sort_values('time').groupby(['price'])['owner'].ffill()

df['owner'] = df.index.map(s)



print(df)


    brand  price                time owner
0   Honda  cheap 2008-01-01 13:30:00  Marc
1  Toyota  cheap 2009-01-01 13:30:00  Jane
2    Ford   alot 2010-01-01 13:30:00  Phil
3    Audi  cheap 2011-01-01 13:30:00  Jane
4   Volvo  cheap 2012-01-01 13:30:00  Jane
5     Bmw   alot 2013-01-01 13:30:00  Phil

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

loc 함수를 사용하여 각 인덱스에 어떻게 별도의 값을 부여 할 수 있습니까?

분류에서Dev

Python Pandas df.loc을 사용하여 부분 변수 값 찾기

분류에서Dev

Windows에서 명령 줄을 사용하여 여러 디렉터리의 이름을 바꿀 수 있습니까?

분류에서Dev

조건부로 목록의 값을 바꿀 수 있습니까?

분류에서Dev

배치 파일을 사용하여 ZIP 파일 내의 파일 이름을 바꿀 수 있습니까?

분류에서Dev

두 열에서 loc을 사용하여 다른 열의 값을 대체하는 계산 수행

분류에서Dev

C # 계산에서 문자열 값을 사용하여 + 또는-연산자를 바꿀 수 있습니까?

분류에서Dev

node / adonis를 사용하여 쿼리의 값을 어떻게 바꿀 수 있습니까?

분류에서Dev

계열을 입력으로 사용하여 Pandas 데이터 프레임에서 일치하는 값이있는 행을 어떻게 찾을 수 있습니까? 예 : df.loc [series]?

분류에서Dev

Java에서 배열의 각 값 쌍을 어떻게 바꿀 수 있습니까?

분류에서Dev

C #에서 DrawRectangle / FillRectangle의 방향을 바꿀 수 있습니까?

분류에서Dev

R에서 두 데이터 프레임 사이의 값을 어떻게 찾고 바꿀 수 있습니까?

분류에서Dev

vaadin 응용 프로그램의 'webapps'내에서 'VAADIN'폴더의 이름을 바꿀 수 있습니까?

분류에서Dev

요인을 검색으로 사용하고 mutate에서 값을 바꿀 수 있습니까?

분류에서Dev

리사이클 러보기에서 내 항목의 배경색을 어떻게 바꿀 수 있습니까?

분류에서Dev

dplyr을 사용하여 R에서 여러 문자를 어떻게 바꿀 수 있습니까?

분류에서Dev

PyTorch Tensor에서 어떻게 값을 바꿀 수 있습니까?

분류에서Dev

특정 값을 삽입하여 각 행에서 NULL이 아닌 첫 번째 값을 바꿀 수 있습니까?

분류에서Dev

gsub ()를 사용하여 df의 변수 이름을 어떻게 바꿀 수 있습니까?

분류에서Dev

DatetimeIndex에서 .loc을 사용하여 특정 날짜의 값 검색 (KeyError

분류에서Dev

파이썬을 사용하여 일치하는 부분을 기반으로 경로의 일부를 어떻게 바꿀 수 있습니까?

분류에서Dev

자바 스크립트를 사용하여 Tr 내부의 값을 어떻게 얻을 수 있습니까?

분류에서Dev

비트 연산자와 비트 조작을 사용하여 C에서 2 개의 정수를 어떻게 바꿀 수 있습니까?

분류에서Dev

PROLOG의 색인을 사용하여 목록의 요소를 어떻게 바꿀 수 있습니까?

분류에서Dev

Perl을 사용하여 변수를 바꿀 수 없습니까?

분류에서Dev

자바 스크립트를 사용하여 한 번에 두 개 이상의 다른 문자열을 바꿀 수 있습니까?

분류에서Dev

Roslyn API를 사용하여 소스 파일의 이름을 바꿀 수 있습니까?

분류에서Dev

JQuery를 사용하여 버튼의 레이블 이름을 어떻게 바꿀 수 있습니까?

분류에서Dev

inode를 사용하여 파일이나 디렉토리의 이름을 바꿀 수 있습니까?

Related 관련 기사

  1. 1

    loc 함수를 사용하여 각 인덱스에 어떻게 별도의 값을 부여 할 수 있습니까?

  2. 2

    Python Pandas df.loc을 사용하여 부분 변수 값 찾기

  3. 3

    Windows에서 명령 줄을 사용하여 여러 디렉터리의 이름을 바꿀 수 있습니까?

  4. 4

    조건부로 목록의 값을 바꿀 수 있습니까?

  5. 5

    배치 파일을 사용하여 ZIP 파일 내의 파일 이름을 바꿀 수 있습니까?

  6. 6

    두 열에서 loc을 사용하여 다른 열의 값을 대체하는 계산 수행

  7. 7

    C # 계산에서 문자열 값을 사용하여 + 또는-연산자를 바꿀 수 있습니까?

  8. 8

    node / adonis를 사용하여 쿼리의 값을 어떻게 바꿀 수 있습니까?

  9. 9

    계열을 입력으로 사용하여 Pandas 데이터 프레임에서 일치하는 값이있는 행을 어떻게 찾을 수 있습니까? 예 : df.loc [series]?

  10. 10

    Java에서 배열의 각 값 쌍을 어떻게 바꿀 수 있습니까?

  11. 11

    C #에서 DrawRectangle / FillRectangle의 방향을 바꿀 수 있습니까?

  12. 12

    R에서 두 데이터 프레임 사이의 값을 어떻게 찾고 바꿀 수 있습니까?

  13. 13

    vaadin 응용 프로그램의 'webapps'내에서 'VAADIN'폴더의 이름을 바꿀 수 있습니까?

  14. 14

    요인을 검색으로 사용하고 mutate에서 값을 바꿀 수 있습니까?

  15. 15

    리사이클 러보기에서 내 항목의 배경색을 어떻게 바꿀 수 있습니까?

  16. 16

    dplyr을 사용하여 R에서 여러 문자를 어떻게 바꿀 수 있습니까?

  17. 17

    PyTorch Tensor에서 어떻게 값을 바꿀 수 있습니까?

  18. 18

    특정 값을 삽입하여 각 행에서 NULL이 아닌 첫 번째 값을 바꿀 수 있습니까?

  19. 19

    gsub ()를 사용하여 df의 변수 이름을 어떻게 바꿀 수 있습니까?

  20. 20

    DatetimeIndex에서 .loc을 사용하여 특정 날짜의 값 검색 (KeyError

  21. 21

    파이썬을 사용하여 일치하는 부분을 기반으로 경로의 일부를 어떻게 바꿀 수 있습니까?

  22. 22

    자바 스크립트를 사용하여 Tr 내부의 값을 어떻게 얻을 수 있습니까?

  23. 23

    비트 연산자와 비트 조작을 사용하여 C에서 2 개의 정수를 어떻게 바꿀 수 있습니까?

  24. 24

    PROLOG의 색인을 사용하여 목록의 요소를 어떻게 바꿀 수 있습니까?

  25. 25

    Perl을 사용하여 변수를 바꿀 수 없습니까?

  26. 26

    자바 스크립트를 사용하여 한 번에 두 개 이상의 다른 문자열을 바꿀 수 있습니까?

  27. 27

    Roslyn API를 사용하여 소스 파일의 이름을 바꿀 수 있습니까?

  28. 28

    JQuery를 사용하여 버튼의 레이블 이름을 어떻게 바꿀 수 있습니까?

  29. 29

    inode를 사용하여 파일이나 디렉토리의 이름을 바꿀 수 있습니까?

뜨겁다태그

보관