2017-05-17 1 views
0

시계열 데이터와 iterrows에 대한 작업을 수행하려고합니다. 나는 날짜에 값을 추가하는 기능을 만들 수 있었지만 팬더는 사용하지 않았습니다. 또한 곱셈, 뺄셈, 나누기 등을 사용하여 어떻게 처리할지 알아낼 수 없습니다.파이썬 판다 iterrow 합계 나누기 빼기

from operator import * 
import pandas as pd 
import requests 

prices_url = r'https://gist.githubusercontent.com/ryan413/596811e3cd15ad891f7cb3cf8ab7c78b/raw/af359e13b26af7699a2afedc9b148dbb19df25b3/prices.csv' 

r = requests.get(prices_url) 

with open("prices.csv", 'w', encoding='utf-8') as f: 
    f.write(r.text) 

df = pd.read_csv('prices.csv',index_col=0, header=0) 

# df.columns = Index(['EUR', 'CAD', 'NOK', 'SPY', 'EUR.1'], dtype='object') 

#     EUR  CAD  NOK  SPY  EUR.1 
# 2/7/2017 31.234616 5.117412 72.662151 93.685559 73.176038 
# 2/8/2017 31.428942 5.471865 72.547450 93.860313 73.889394 
# 2/9/2017 30.871875 4.984493 73.030060 94.652531 72.944198 
# 2/10/2017 30.716414 4.918033 73.614387 95.182618 75.887682 
# 2/13/2017 30.133437 5.305716 74.164088 95.916584 76.568937 


def add_rows(df_prices): 
    row_sum = {} 
    for idx, col in df_prices.iterrows(): 
     row_sum[idx] = sum(col) 
    return row_sum 

sum_of_rows = add_rows(df) 

for k,v in sum_of_rows.items(): 
    print(k," - ", v) 

# 2/7/2017 - 275.875777014 
# 2/8/2017 - 277.197963968 
# 2/9/2017 - 276.483156429 
# 2/10/2017 - 280.319134197 
# 2/13/2017 - 282.088761272 
# 2/14/2017 - 280.555245767 
# 2/15/2017 - 281.487035784 
# 2/16/2017 - 281.282552346 
# 2/17/2017 - 280.508299074 

# values in each row are added together 

1 : 팬더를 사용하면 더 쉬운 방법이 있습니까?

def multiplication(df_prices): 
    row_multiply = {} 
    for idx, col in df_prices.iterrows(): 
     row_multiply[idx] = mul(col,col) 
    return row_multiply 

mult_of_rows = multiplication(df) 

for k, v in mult_of_rows.items(): 
    print(k, " - ", mul(v, v)) 

# 
# 3/3/2017 - EUR  926.858939 
# CAD   7.304602 
# NOK  5603.190074 
# SPY  9842.184083 
# EUR.1 5915.492570 
# Name: 3/3/2017, dtype: float64 
# trying to multiply each of the the values with each other 

# EUR * CAD * NOK * SPY = value I'm trying to get for each of the rows 

질문 2 : 동일한 작업을 어떻게하면 좋을까요? 분할? 빼기? 여기

답변

1

당신이 이동 : 당신이 (더 의미 이럴 만들 것) 열을 요약하려는 경우

sum cols: 

df.sum(axis=1) 

multiply: 

import numpy as np 
df.apply(lambda row: np.prod(row), axis=1) 

당신은 단순히 01에서 axis을 변경할 수 있습니다.

df['Eurocents'] = df.EUR * 100 

또는 전체 dataframeL

df_in_cents = df * 100 

위해 나는 이것이 당신이 찾고있는 무슨 희망 :

그것은 상수 /으로 나눔을 곱 수도 있습니다.

+0

차가움. 고맙습니다 – mac