我有一个带有一列整数和字符串标签的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
答案 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