Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将df乘以2个常数,创建2个dfs_Python_Python 3.x_Pandas - Fatal编程技术网

Python 将df乘以2个常数,创建2个dfs

Python 将df乘以2个常数,创建2个dfs,python,python-3.x,pandas,Python,Python 3.x,Pandas,我刚接触熊猫,目前有一个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 0 680.0

我刚接触熊猫,目前有一个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
0    680.068
1    319.932
Name: constantValue, dtype: float64
另一个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
0    680.068
1    319.932
Name: constantValue, dtype: float64
对于我来说,获取第一个df,将其乘以每个常数,并创建与第一个df相同形式的2个df,但将每个元素乘以的最快方法是什么

就效率而言,我应该分成两个dfs还是引入某种多索引

此外,常量数可能会更改,因此它可以返回3个常量,这将导致3个dfs,4个常量4个dfs等


任何建议都将不胜感激

您可以在常数表中循环 并创建一个动态数据帧,然后将其乘以常量值

在这里,我假设常量_df是包含常量的第二个数据帧 循环遍历它,列_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']

我没有尝试过这段代码,因此如果发生任何错误,请告诉我

好的,这样您就有了一个数据帧,您希望将其乘以不同系列的值(因为您的常量表看起来更像熊猫系列,而不是数据帧)

这里没有效率问题:

  • 迭代一个序列很快
  • 如果列数据类型与浮点乘法兼容,那么将数据帧与标量值相乘的速度很快(pandas或numpy字是可矢量化的)
在这里,您只有(据我猜测)浮点列和
日期的DatatimeIndex,这不会受到影响

IMHO最简单的方法是建立一个数据帧列表。假设原始数据帧为df,常数为系列常数:

df_list = [df * val for val in constants]

所以我应该在一个列表中有一个常数?那么这将为每次乘法输出一个数据帧列表?使用多索引而不是dfs列表是否有益?@Bob:否这将在每次乘法中输出一个数据帧。但是,在使用两个不同的变量来命名这两个新的数据帧时,我建议将这两个数据帧存储在一个列表中。这样,如果在常量表中添加第三行,则完全相同的代码将为您提供一个包含3个数据帧的列表。