Pri*_*ish 3 python eval pandas
正如我的问题所述,我想在运行时调用数据帧的自定义函数。自定义函数的用途是计算两个日期之间的差异(即年龄)、将年份转换为月份、从两列中查找最大最小值等。
到目前为止,我成功地执行了算术运算和一些函数,如abs()、sqrt(),但无法让min()-max()工作。工作是,
df.eval('TT = sqrt(Q1)',inplace=True)
df.eval('TT1 = abs(Q1-Q2)',inplace=True)
df.eval('TT2 = (Q1+Q2)*Q3',inplace=True)
Run Code Online (Sandbox Code Playgroud)
以下代码适用于 eval。如何将其与 dataframe eval 一起使用?
def find_max(x,y):
return np.maximum(x,y)
eval('max1')(4,7)
def find_age(date_col1,date_col2):
return 'I know how to calc age but how to call func this with df.eval and assign to new col'
Run Code Online (Sandbox Code Playgroud)
示例数据框:
op_d = {'ID': [1, 2,3],'V':['F','G','H'],'AAA':[0,1,1],'D':['2019/12/04','2019/02/01','2019/01/01'],'DD':['2019-12-01','2016-05-31','2015-02-15'],'CurrentRate':[7.5,2,2],'NoteRate':[2,3,3],'BBB':[0,4,4],'Q1':[2,8,10],'Q2':[3,5,7],'Q3':[5,6,8]}
df = pd.DataFrame(data=op_d)
Run Code Online (Sandbox Code Playgroud)
任何帮助或链接到文档表示赞赏。
我找到但没有解决我的问题的有用链接是:
使用 pd.eval() 在 pandas 中进行动态表达式评估
函数可以像往常一样调用,您需要使用@synbol 来引用它们:
df
A B
0 1 0
1 0 0
2 0 1
def my_func(x, y): return x + y
df.eval('@my_func(A, B)')
0 1
1 0
2 1
dtype: int64
Run Code Online (Sandbox Code Playgroud)
当然,这里的期望是您的函数期望系列作为参数。否则,根据np.vectorize需要将您的函数包装在对 的调用中。
| 归档时间: |
|
| 查看次数: |
2515 次 |
| 最近记录: |