在Python中,有没有一种优雅的方法可以调用同一对象上的方法列表?
我想知道在python中是否有一种优雅或者更简单的方法来调用同一对象上的方法列表,而不是每次重复编写。例如:在Python中,有没有一种优雅的方法可以调用同一对象上的方法列表?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我想知道在python中是否有一种优雅或者更简单的方法来调用同一对象上的方法列表,而不是每次重复编写。例如: df['date_col'] = pd.to_datetime(df['date_col']) df['date_col_day'] = df['date_col'].dt.day df['date_col_month'] = df['date_col'].dt.month df['date_col_year'] = df['date_col'].dt.year 可以用更优雅的 for
df['date_col'] = pd.to_datetime(df['date_col'])
df['date_col_day'] = df['date_col'].dt.day
df['date_col_month'] = df['date_col'].dt.month
df['date_col_year'] = df['date_col'].dt.year
可以用更优雅的
for method in [day, month, year]:
df[method.name] = df['date_col'].dt.method
我知道上面的例子在语法上是不正确的,它只是我想要它如何的一个演示
有可能吗?如果您有许多函数被称为“级联”,即:
y1=fun1(df.x)
y2=fun1(y1)
y3=fun1(y2)
date_col Xxx Yyy
0 2019-01-12 100 97.37
1 2019-01-16 100 86.15
2 2019-01-20 80 80.00
3 2019-01-23 100 100.00
(日期列为字符串类型)
定义以下转换函数:
def conv(str):
datTim = pd.to_datetime(str)
return pd.Series([datTim, datTim.day, datTim.month, datTim.year],
index=['date_col', 'date_col_day', 'date_col_month', 'date_col_year'])
并按以下方式应用:
dtc = df.pop('date_col')
df = dtc.apply(conv).join(df)
请注意,pop检索给定的列,并将其从df中删除。
然后将conv应用于该列,生成一个数据帧,并使用
4列(日期及其“部分”)。最后一步是加入它
源数据帧的“剩余部分”(dat_col之后的列)
已删除)
现在,date_col为datetime64类型,其内容为:
date_col date_col_day date_col_month date_col_year Xxx Yyy
0 2019-01-12 12 1 2019 100 97.37
1 2019-01-16 16 1 2019 100 86.15
2 2019-01-20 20 1 2019 80 80.00
3 2019-01-23 23 1 2019 100 100.00