def integration(*arg):
try:
return np.sum(arg)
except:
name = arg
return name
嗨~这是我的函数,我想像这样将这个函数应用到DataFrame
k g r
0 dd cc hh
1 bb 1 9
2 dd aa ll
3 bb 4 6
我得到的结果是
g r
k
bb 5 15
dd ccaa hhll
我想要“cc”而不是“ccaa”和“hh”而不是“hhll”。当自定义函数的输入长度超过2个或更多时,我只想反映上面的一个。
答案 0 :(得分:0)
类似于:
def integration(*arg):
try:
if type(np.sum(arg))==string:
return np.sum(arg)[0:2]
else:
return np.sum(arg)
except:
name = arg
return name
答案 1 :(得分:0)
您可以执行以下操作,这更麻烦:
# Set the 'k' columns as index
df.set_index('k', inplace=True)
#Then you need to separate numbers from strings so you can change them to integers
df_numeric = df.apply(lambda x: x[x.str.contains(r'^\d+')]).astype(int).groupby(level=0).sum()
df_object = df.apply(lambda x:x[~(x.str.contains(r'^\d+'))])
df = pd.concat([df_numeric, df_object]).reset_index().drop_duplicates('k', keep='first')
输出:
k g r
0 bb 5 15
1 dd cc hh