pandas 列中去掉重复值

我现在有一个dataframe 通过cunt 列汇总得到一个新列(最后一列) 但是汇总数33每行都有,怎样只保留一行有数字,用过duplicates 方法 结果只能保留一行。我想保留前面所有行正常数据,只最后一列显示汇总数字即可。

img

没太看懂,你是想要这种效果么?

img

import pandas as pd

# a = pd.read_excel('123.xlsx')
list1 = [['a', 3, 1], ['a', 5, 2], ['a', 3, 5], ['a', 9, 6], ['b', 6, 3], ['b', 5, 4], ['b', 10, 10], ['c', 10, 11],
         ['c', 12, 14]]
b = pd.DataFrame(list1, columns=['name', 'score', 'reward'])
# b.loc[0, 'result'] = 3

print(b)
b.loc[9, 'result'] = b['score'].sum()
print('*' * 20)
print(b)

使用pandas的duplicates函数。如果其中用参数inplace=True,可直接输出去重后的数据框,如不加inplace参数或设置为False时,则需要将其赋值给新变量才能输出变化后的结果。df.drop_duplicates(subset=None, keep=‘first’, inplace=False)。代码示例:

import pandas as pd
df = pd.DataFrame({'num':range(8),'values':[123,456,789,123,456,897,456,230]})
print(df)
df.drop_duplicates('values',keep='first',inplace=True)
print(df)
df1=df.drop_duplicates('values',keep='first')
print(df1)

参考:

针对你的需求,你可以这样处理列数据:

import pandas as pd
df = pd.DataFrame({'num':range(4),'values':[2,1,29,1]})
df['new']=[df['values'].sum() if i==0 else '' for i in range(len(df))]
print(df)