我有像这样的DataFrame
DataFrame({"key":["a","b","c","d","e"], "value": [5,4,3,2,1]})
我主要对行“a”,“b”和“c”感兴趣。我想将其他所有内容合并到像这样的“其他”行
key value
0 a 5
1 b 4
2 c 3
3 others 3
我想知道如何做到这一点。
答案 0 :(得分:2)
首先创建一个没有d和e的数据框:
df2 = df[df.key.isin(["a","b","c"])]
然后找到您希望其他列具有的值(在此示例中使用sum函数):
val = df[~df["key"].isin(["a","b","c"])].sum()["value"]
最后,将此列附加到第二个df:
df2.append({"key":"others", "value":val},ignore_index=True)
df2现在是:
key value
0 a 5
1 b 4
2 c 3
3 others 3
答案 1 :(得分:0)
我找到了办法。不确定这是不是最好的方式。
In [3]: key_map = {"a":"a", "b":"b", "c":"c"}
In [4]: data['key1'] = data['key'].map(lambda k: key_map.get(k, "others"))
In [5]: data.groupby("key1").sum()
Out[5]:
value
key1
a 5
b 4
c 3
others 3