Python:不使用循环的列和行操作

问题描述 投票:4回答:2

我有一个以下df1

  Date        Tickers Qty
01-01-2018    ABC    25
02-01-2018    BCD    25
02-01-2018    XYZ    31
05-01-2018    XYZ    25

和另一个df2如下

  Date         ABC  BCD  XYZ
01-01-2018    123   5   78
02-01-2018    125   7   79
03-01-2018    127   6   81
04-01-2018    126   7   82
05-01-2018    124   6   83

我想在df1中得到一个结果列,它是df2中正确列和行的乘积 - 在给定日期获得正确的股票价格,让其他日期在df1内有纳米

  Date       df1['Product']
01-01-2018      3075
02-01-2018      175
02-01-2018      2449
03-01-2018      nan
04-01-2018      nan
05-01-2018      2075

这看起来像标准的python操作,但我无法在没有编写循环的情况下实现这一点 - 这需要很长时间才能执行:

我在Date上合并了上面的两个表,然后运行了下面的循环

for i in range(len(df1)):
    try:
        df1['Product'][i] = df1[df1['Ticker'][i]][i]
    except ValueError:
        df['Product'][i] = np.nan

有没有更好的pythonic方法来实现这一点,而不是写这个循环?

python pandas dataframe
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.