【发布时间】:2022-12-21 19:49:52
【问题描述】:
我有两个数据框:
import pandas as pd
df = pd.DataFrame({'Name':['Tom','Jhon','Dan'], 'start': [4,6,10], 'stop':[7,7,12]})
d = pd.DataFrame({'ID':['Tom','Tom','Tom','Tom','Jhon','Dan'],'game':[3,5,6,9,7,11] ,'hits': [10,12,9,8,8,6],'kills':[4,8,5,6,3,2]})
我想根据条件过滤d向df添加2列。
我能够通过 col 来做到这一点:
def get_hits(row):
return d[(d['ID']==row['Name']) & (d['game']>row['start']) & (d['game']<row['stop'])]['hits'].sum()
def get_kills(row):
return d[(d['ID']==row['Name']) & (d['game']>row['start']) & (d['game']<row['stop'])]['kills'].sum()
df['ok_hits']=df.apply(lambda row: get_hits(row), axis=1)
df['ok_kills']=df.apply(lambda row: get_kills(row), axis=1)
问题:是否可以使用下面的函数同时添加两列,返回一个系列?
在实践中,我必须为很多专栏做这件事。
def get_hits_kills(row):
return d[(d['ID']==row['Name']) & (d['game']>row['start']) & (d['game']<row['stop'])][['hits','kills']].sum()
【问题讨论】: