有效地连接DataFrame索引的两个标签

时间:2014-08-28 12:59:27

标签: python pandas dataframe

我有一个带有一列整数和字符串标签的DataFrame。 我想加入(如总结)两个标签,而我更换新标签。

我的DataFrame是:

import pandas as pd
pd.DataFrame(data=np.array([1,2,3,4]), index=['a','b','c','d'], columns=['cost'])

   cost
a     1
b     2
c     3
d     4

我想将其更改为:

         cost
a           1
b           2
c and d     7

3 个答案:

答案 0 :(得分:2)

不知道是否有更清洁的方式,但这有效:

In [157]:

df.append(pd.DataFrame(index=['c and d'], data={'cost':df.loc[df.cost.isin([3,4])].sum().values})).drop(['c','d'])

Out[157]:
         cost
a           1
b           2
c and d     7

我们构建一个数据框以附加到您现有的数据框。我们将新索引设置为'c和d',然后对标签位于'c'和'd'的行进行求和,然后最后删除它们。

答案 1 :(得分:2)

使用df.reindex的一个选项:

>>> df.loc['c and d'] = df.loc['c'] + df.loc['d']
>>> df.reindex(index=['a', 'b', 'c and d'])
>>> df
         cost
a           1
b           2
c and d     7

[3 rows x 1 columns]

答案 2 :(得分:0)

您可以为要求求和的一个的索引标签命名并使用groupby。

In [35]: df = df.rename(index={'d': 'c'})

In [36]: df.groupby(level=0).sum()
Out[36]: 
   cost
a     1
b     2
c     7