2017-05-17 13 views
0

時系列データとiterrowsで操作を実行しようとしています。私は日付に値を追加するが、パンダを使わない関数を作ることができました。また、乗算、減算、除算などを使ってどのように行うのか把握できません。python pandas 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 

Q2:私はどのようにして同じことを乗算で行いますか?分割?減算?ここ

答えて

1

あなたが行く:

sum cols: 

df.sum(axis=1) 

multiply: 

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

あなたは(私見より理にかなって)列を合計したい場合は、単に01からaxisを変更することができます。

それは定数と/ devideを乗算することも可能です:

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

または全体dataframeL

df_in_cents = df * 100 

ための私は、これはあなたが探しているものであると思います。

+0

Cool。ありがとうございました – mac

関連する問題