首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在循环pandas数据帧之前,我如何找出哪些操作数是受支持的?

在循环pandas数据帧之前,我如何找出哪些操作数是受支持的?
EN

Stack Overflow用户
提问于 2019-05-08 07:10:26
回答 1查看 34关注 0票数 0

我正在尝试迭代Pandas DataFrame中的序列中的行。我想获取列csv_df['Strike']的每一行中的值,并将其插入在函数a中调用的变量K中。

然后,我希望将输出的a1a2放入DataFrame中各自的列中。

我收到了错误:TypeError: unsupported operand type(s) for *: 'int' and 'zip',我想如果我能找出支持哪些操作数,我就可以将a1a2转换为它。

我的想法正确吗?

注意:S只是一个静态数字,因为df只有一行,而K有很多行。

代码如下:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-05-08 07:45:30

似乎另一种方法是将您的方法单独应用于每个数据框,如:

代码语言:javascript
运行
复制
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 Series (数据框中的一列)是避免定义只使用一次的方法的一种方法。另外,我不会像你那样在循环中定义一个方法。干杯

ps。我相信你已经忘记在你的方法中返回这两个值了。

代码语言:javascript
运行
复制
def a(S, K):
        a1 = 100 * K
        a2 = S
        return (a1, a2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56031540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档