我是熊猫的新手,目前拥有一个如下所示的df:
p1 p2 p3 p4
dates
2019-12-01 0.0000468 0.0000455 0.00004 0.0000323
2019-12-02 0.0000401 0.0000353 0.0000333 0.0000318
和另一个看起来像这样的df:
0 680.068
1 319.932
Name: constantValue, dtype: float64
对我来说,最快的方法是取第一个df,然后将其乘以每个常量,然后创建2个与第一个相同的df,但对每个元素乘以2的最快方法是什么?
就效率而言,我应该分成2个df还是引入某种MultiIndex?
常量数也可以更改,因此它可以返回3个常量,这将导致3 dfs,4个常量4 dfs等
任何建议都值得赞赏
答案 0 :(得分:1)
好吧,因此您有一个DataFrame想要将其乘以一个不同Series的值(因为常量表看起来比DataFrame更像是熊猫Series)。
这里没有效率问题:
这里,您只有(据我所能猜测的那样)浮点列和dates
索引的DatatimeIndex不会受到影响。
恕我直言,最简单的方法是建立DataFrames列表。假设原始DataFrame为df
,常量为Series constants
:
df_list = [df * val for val in constants]
答案 1 :(得分:0)
您可以遍历常量表 并创建一个动态数据框,然后将其与常量值相乘
在这里,我假设constant_df为包含常量的第二个数据帧 您遍历它,column_name是您要用来使其唯一的列
for constant_df in constant:
multi[constant['column_name']] = df # to create unique dataframe
multi[constant['column_name']].select_dtypes(exclude=['object', 'datetime']) * constant['constant_value_column']
我还没有尝试过此代码,所以如果发生任何错误,请告诉我