◆ ◆ ◆ ◆ ◆
有人問了我一個這樣的問題,題目是:……。直接上圖吧~
import pandas as pd
data = {'考試':['一模','二模','一模','二模','一模','二模'],
'姓名':['張三','張三','李四','李四','王五','王五'],
'語文':[78,75,68,72,80,82],
'數(shù)學(xué)':[90,95,78,76,100,92],
'英語':[85,82,78,76,86,93]}
df = pd.DataFrame(data)
df
#方法一#
# 一定要深刻體會groupby后加的字段的不同
delta = df.groupby('姓名')['考試','語文','數(shù)學(xué)','英語'].last() - df.groupby('姓名')['語文','數(shù)學(xué)','英語'].first()
# 重設(shè)索引,使姓名列恢復(fù)列字段
delta.reset_index(inplace = True)
# 填充為對比,滿足需求的每一個小細(xì)節(jié)
delta.fillna('對比',inplace=True)
# 輸出瞧一瞧
delta
# 這種方式是可以設(shè)置ignore_index = True
df.append(delta,ignore_index = True,sort = False).sort_values('姓名').reset_index(drop=True)
#方法二#
delta = df.groupby('姓名').diff().dropna()
delta
3.2使用append添加結(jié)果進(jìn)去
# 這種方式必須設(shè)置ignore_index = False,否則在索引排序時就會匹配不到結(jié)果
df.append(delta,ignore_index = False,sort = False).sort_index().fillna({'考試':'對比'}).fillna(method = 'ffill')
聯(lián)系客服