基于列后缀的条件数据帧计算

2024-10-03 15:32:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如何根据列名的最后3个字母平均数据帧中的列。我正在尝试创建一个新列,它将给出数据帧中所有“出价”的平均值。在

我的数据框是这样的:

    JPM_bid,   JPM_ask,   Socgen_bid,   Socgen_ask,   UBS_bid,   UBS_ask  ....so forth
0   1.01556    1.01557    1.01552       1.01559       1.01555    1.01558

现在我在做这样的计算:

^{pr2}$

谢谢你的帮助!在


Tags: 数据so字母ask平均值bidforthpr2
2条回答

IIUC您需要使用列名中包含bid的列对数据帧进行子集并计算平均值。您可以使用str.contain对列进行子集,用loc查找该列的值,并为行轴获取mean

df.loc[:, df.columns.str.contains('bid')].mean(axis=1)

对于您的数据帧部分:

^{pr2}$

编辑

要排除0,可以将您的df与0进行比较,然后使用mean。如果您为此类数据帧附加代码或示例会更好,但没有数据,请执行以下操作:

df_subset = df.loc[:, df.columns.str.contains('bid')]
df_subset[df_subset != 0].mean(axis=1) 

首先获取名称中带有“bid”的所有列名。在

columns_with_bid = [column for column in df.columns if '_bid' in column]

然后过滤数据帧并遍历行。在

^{pr2}$

编辑:首先误解了计算所有出价值平均值的问题,而不仅仅是行的平均值。在

相关问题 更多 >