这是我的第一个问题,所以请耐心等待。
我的问题如下:
假设我们有一个 pandas Dataframe,并且我们希望动态地将一些 pd.Series 方法应用于该 Dataframe 的一组列。为什么下面的例子不起作用?
testframe=pd.DataFrame.from_dict({'col1': [1,2] ,'col2': [3,4] })
funcdict={'col1':[pd.Series.astype,str.replace],'col2':[pd.Series.astype,str.replace]}
argdict= {'col1':[['str'],['1','A']],'col2':[['str'],['3','B']]}
for col in testframe.columns:
for func in funcdict[col]:
idx=funcdict[col].index(func)
testframe[col]=testframe[col].func(*argdict[col][idx])
预期结果是
col1 col2
0 'A' 'B'
1 '1' '4'
但相反我得到
AttributeError: 'Series' object has no attribute 'func'
值得注意的是
testframe['col1']=testframe['col1'].astype(*argdict['col1'][0])
按预期工作,所以不知何故 python 似乎对 '.func' 语法有问题,尽管事实上
print(func)
产生所需的输出:“function NDFrame.astype at 0x00000186954EB840”等。