Python 有没有办法对多个数据帧的每个元素进行操作,然后将相应的元素合并到一个新的数据帧中?

Python 有没有办法对多个数据帧的每个元素进行操作,然后将相应的元素合并到一个新的数据帧中?,python,python-3.x,Python,Python 3.x,我需要创建一个新的数据帧(mid),它计算bid、ask数据帧的每个单元格的平均值。 所有三个数据帧的格式都相同。 我该怎么做呢? 我已经读到,不应该迭代数据帧。 我尝试了df.iterrows(),但得到了奇怪的结果 这是到目前为止的代码 CDS_bid = {'Entity':['General Motors','Ford','Goldman Sachs','JPMC','Chevron'], '1YB':[14.39, 23.39, 17.51, 11.3, 4.3

我需要创建一个新的数据帧(mid),它计算bid、ask数据帧的每个单元格的平均值。 所有三个数据帧的格式都相同。 我该怎么做呢? 我已经读到,不应该迭代数据帧。 我尝试了df.iterrows(),但得到了奇怪的结果

这是到目前为止的代码

CDS_bid = {'Entity':['General Motors','Ford','Goldman Sachs','JPMC','Chevron'],
            '1YB':[14.39, 23.39, 17.51, 11.3, 4.38],
            '2YB':[33.97, 52.73, 24.02, 14.58, 9.63],
            '3YB':[59.05, 87.02, 33.01, 19.56, 17.62],
            '4YB':[85.94, 128.89, 43.39, 25, 25.88],
            '5YB':[116.66, 176.82, 56.74, 33.67, 32.98]
          }


CDS_ask = {'Entity':['General Motors','Ford','Goldman Sachs','JPMC','Chevron'],
            '1YA':[29.4, 45.49, 25.79, 19.53, 13.62],
            '2YA':[48.97, 72.6, 32.3, 22.54, 19.06],
            '3YA':[74.05, 106.89, 40.85, 27.08, 26.7],
            '4YA':[100.94, 146.62, 50.8, 32.09, 34.6],
            '5YA':[125.35, 186.82, 61.7, 37.7, 41.25]
          }

CDS_bid_df = pd.DataFrame.from_dict(CDS_bid)
CDS_ask_df = pd.DataFrame.from_dict(CDS_ask)
需要创建一个新的数据帧(mid),它计算bid、ask数据帧的每个单元格的平均值。
与bid格式相同,要求dataframe实现您想要的,需要几个步骤:

  • 将数据帧值转换为浮点值
  • 设置公共索引和列值
  • 知道如何进行数据帧的添加和划分
  • 守则:

    # When reading the dictionary to a dataframe,
    # you should specify that your data is of type float,
    # otherwise it will be an object (string).
    CDS_bid_df = pd.DataFrame.from_dict(CDS_bid, dtype=float)
    CDS_ask_df = pd.DataFrame.from_dict(CDS_ask, dtype=float)
    
    
    # Set column Entity (which is still a string) as an index.
    CDS_bid_df.set_index('Entity', inplace=True)
    CDS_ask_df.set_index('Entity', inplace=True)
    
    
    # The two dataframes have different columns, so one solution is to set the
    # columns of the ask dataframe to the bid dataframe (or vice versa).
    CDS_bid_df.columns = CDS_ask_df.columns
    
    # Calculate the mid is now straightforward.
    CDS_mid_df = CDS_bid_df.add(CDS_ask_df.sub(CDS_bid_df) / 2)
    

    感谢您对数据类型的深入了解,1)索引丢失-猜测添加时必须执行此操作,更重要的是2)列名称必须更改回2)是的,列名称可以更改回,但这很容易做到。对于新的DF,由于您得到了一个mid(新DF),并且bid的列名称与ask中的列名称不同,因此我不知道您对mid的列名称有什么想法。