簡體   English   中英

在循環通過pandas數據幀之前,如何找出支持哪些操作數?

[英]How can I find out which operands are supported before looping through pandas dataframe?

我試圖在Pandas DataFrame中迭代系列中的行。 我想取csv_df['Strike']列的每一行中的值並將其插入到變量K ,該變量在函數a被調用。

然后,我希望將輸出a1a2放入DataFrame中自己的列中。

我收到錯誤: TypeError: unsupported operand type(s) for *: 'int' and 'zip' ,我想如果我能找出支持哪些操作數,我可以將a1a2轉換為它。

我正確地考慮了這個嗎?

注意: S只是一個靜態數字,因為df只是一行,而K有很多行。

代碼如下:

from scipy.stats import norm
from math import sqrt, exp, log, pi
import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
import fix_yahoo_finance as yf
yf.pdr_override()
import numpy as np
import datetime
from pandas_datareader import data, wb
import matplotlib.pyplot as plt

#To get data:

start = datetime.datetime.today()
end = datetime.datetime.today()
df = data.get_data_yahoo('AAPL', start, end) #puts data into a pandas dataframe

csv_df = pd.read_csv('./AAPL_TEST.csv')

for row in csv_df.itertuples():

    def a(S, K):
        a1 = 100 * K
        a2 = S
        return a1

    S = df['Adj Close'].items()
    K = csv_df['strike'].items()

    a1, a2 = a(S, K)

    df['new'] = a1
    df['new2'] = a2

看起來你想做的事情的另一種方法是將你的方法分別應用於每個數據框,如:

df = data.get_data_yahoo('AAPL', start, end)
csv_df = pd.read_csv('./AAPL_TEST.csv')

df['new'] = csv_df['strike'].apply(lambda x: 100 * x)
df['new2'] = df['Adj Close']

也許,將計算直接應用於Pandas系列(數據框的一列)是避免定義僅使用一次的方法的一種方法。 另外,我不會像你一樣在循環中定義一個方法。 干杯

PS。 我相信你忘了在你的方法中返回兩個值。

def a(S, K):
        a1 = 100 * K
        a2 = S
        return (a1, a2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM