>

여기 내 데이터 프레임이 있습니다

ord_datetime
2019-05-01    22.483871
2019-05-02    27.228070
2019-05-03    30.140625
2019-05-04    32.581633
2019-05-05    30.259259

이런 코드를 작성하면

b=[]
b.append((df.iloc[2]-df.iloc[1])/(df.iloc[1]))
print(b)

출력은

[Ordered Items    0.106969
dtype: float64]

0.106969 와 같은 출력을 원합니다  오직

어떻게하면 되나요?


  • 답변 # 1

    Series 와 협력하고 있습니다  여기,이 결과를 얻는 이유입니다. 당신의 iloc   Series 를 반환  1 개의 요소 중 하나이며 산술 연산자도 계열을 반환합니다. 스칼라 값을 얻으려면 my_series[0] 를 사용하면됩니다. .

    예를 들어 :

    data = {datetime(2019, 5, 1): 22.483871, datetime(2019, 5, 2): 27.228070,
            datetime(2019, 5, 3): 30.140625, datetime(2019, 5, 4): 32.581633,
            datetime(2019, 5, 5): 30.259259}
    df = pd.DataFrame.from_dict(data, orient="index")
    series_result = (df.iloc[2] - df.iloc[1]) / df.iloc[1]
    scalar_result = series_result[0]
    # you can append the result to your list if you want
    
    
    

  • 답변 # 2

    다음과 같은 작업을 수행 할 수 있습니다

    import pandas as pd
    data = {
        "ord_datetime": ["2019-05-01","2019-05-02","2019-05-03","2019-05-04","2019-05-05"],
        "value": [22.483871,27.228070,30.140625,32.581633,30.259259]
    }
    df = pd.DataFrame(data=data)
    res = [ (df.iloc[ridx + 1, 1] - df.iloc[ ridx, 1]) / (df.iloc[ridx, 1]) for ridx in range(0, df.shape[0]-1) ]
    res # [0.2110045463256749, 0.10696883767376833, 0.08098730533955406, -0.0712786249848188]
    
    

    도움이 되길 바랍니다.

  • 답변 # 3

    출력에서 ​​값을 얻으려면 df.values 를 사용할 수 있습니다  numpy 배열을 반환합니다. 해당 numpy 배열의 목록을 원하면 np_array.tolist 를 사용할 수 있습니다 .

    그래서

    b = ((df.iloc[2]-df.iloc[1])/(df.iloc[1])).values #returns numpy array
    b.tolist # returns python list
    
    

관련 자료

  • 이전 파이썬에서 SQLite 테이블/열 이름의 문자열을 어떻게 이스케이프합니까?
  • 다음 php - opencart 버전 3020에서 사용자 정의 ocmod 수정이 작동하지 않습니다