Python 3.x 多索引列的总和
如果我有一个带有嵌套标题的数据框,如下所示:Python 3.x 多索引列的总和,python-3.x,pandas,multi-index,Python 3.x,Pandas,Multi Index,如果我有一个带有嵌套标题的数据框,如下所示: John Joan Smith, Jones, Smith, Index1 234 432 324 Index2 2987 234 4354 …如何创建一个新列,对每行的值求和? 我尝试了df['sum']=df['John']+df['Joan'],但导致了以下错误: ValueError: Wrong number o
John Joan
Smith, Jones, Smith,
Index1 234 432 324
Index2 2987 234 4354
…如何创建一个新列,对每行的值求和?
我尝试了df['sum']=df['John']+df['Joan']
,但导致了以下错误:
ValueError: Wrong number of items passed 3, placement implies 1
舞会,好久没你的消息了 您希望按分组,但指定标高和轴
axis=1
表示要对行而不是列求和level=0
是列的顶行
df = pd.DataFrame({
('John', 'Smith,'): [234, 2987],
('John', 'Jones,'): [432, 234],
('Joan', 'Smith,'): [324, 4354]}, index=['Index1', 'Index2'])
>>> df.groupby(level=0, axis=1).sum()
Joan John
Index1 324 666
Index2 4354 3221
如果我理解正确: …如何创建一个新列,对每行的值求和 解决方案 每行的总和为
df.sum(axis=1)
诀窍在于成为一个新专栏。您需要确保添加的列具有两级列标题
df.loc[:, ('sum', 'sum')] = df.sum(axis=1)
我对它不满意,但它很管用
Joan John sum
Smith, Jones, Smith, sum
Index1 324 432 234 990
Index2 4354 234 2987 7575
谢谢你们两位。如果前面有一些列我不需要求和,我将如何创建新的求和列(如上所述)?例如,如果第一列是name,第二列是age,我如何忽略它们呢?我解决了我的后续问题:首先,将要求和的列集定义为如下变量:cols=df[['a','b']]。接下来,像这样使用该变量:df.loc[:,('sum','sum')]=cols.sum(axis=1)