作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在这里的第一个问题,所以请耐心等待。
我的问题如下:
假设我们有一个 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])
print(func)
最佳答案
您调用方法的语法不正确。在 Python 中有两种方法可以调用方法。
直销
正如您所发现的,这将起作用。请注意 astype
不是引用其他对象,它是属于 pd.Series
的方法的实际名称.
testframe['col1'] = testframe['col1'].astype(*argdict['col1'][0])
astype
是方法的名称。
from operator import methodcaller
testframe['col1'] = methodcaller('astype', *argdict['col1'][0])(testframe[col])
testframe[col].func(...)
永远不会像
func
那样工作不是
pd.Series
的名字方法。
关于python - 将方法列表中的方法应用到 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359442/
我是一名优秀的程序员,十分优秀!