我有一个DataFrame
列如下:
["A_1", "A_2", "A_3", "B_1", "B_2", "B_3"]
我想做的是通过计算它们的平均值来“折叠”单个列中的各个A和B列。简而言之,手术结束后我会得到:
["A", "B"]
其中“A”是所有“A”列的列平均值,“B”是所有“B”列的平均值。
据我所知,groupby
不适合此任务,或者我使用它的方式不正确:
grouped = data.groupby([item for item in data if "A" not in item])
如果我使用axis=1,那么在调用mean()时,我得到的只是一个空数据帧,如果没有,我就没有得到所需的效果。我想避免构建一个单独的数据帧,通过迭代来填充means(例如,通过分别计算means,然后像new_df["A"] = mean_a
那样添加means)。有什么有效的解决办法吗?
我不知道有效率,但我可能会这样做:
我想
lambda x: x.split('_')[0]
会更健壮一些。您希望使用接受
axis
参数的内置mean()
函数来指定行方式。由于您知道所需的不同方法的特定列名约定,因此可以使用下面的示例代码非常高效地执行该约定。在这里,我选择只制作两个额外的列,而不是实际销毁现有的数据。我还可以将这些新列放入一个新的数据框架中;这取决于您的需要和方便之处。在这两种情况下,同样的基本思想都会起作用。相关问题 更多 >
编程相关推荐