Python 有没有办法对多个数据帧的每个元素进行操作,然后将相应的元素合并到一个新的数据帧中?
我需要创建一个新的数据帧(mid),它计算bid、ask数据帧的每个单元格的平均值。 所有三个数据帧的格式都相同。 我该怎么做呢? 我已经读到,不应该迭代数据帧。 我尝试了df.iterrows(),但得到了奇怪的结果 这是到目前为止的代码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
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的列名称有什么想法。