我经常想display
在一系列链接操作中同时操作数据框,为此我会使用*:
df = (
df
#Modify the dataframe:
.assign(new_column=...)
#View result (without killing the chain)
.pipe(lambda df_: display(df_) or df_)
#...further chaining is possible
)
上面的代码块添加new_column
到数据框,显示新的数据框,最后返回它。这里链接有效,因为display
返回None
**。
display
我的问题是关于我想用plt.plot
或某些不返回的函数替换 的情况None
。在这种情况下,df_
将不再通过链传播。
目前,我的目标是定义一个transparent_pipe
可以运行的外部函数plt.plot
或任何其他方法,同时确保数据框得到传播:
def transparent_pipe(df, *funcs):
[func(df) for func in funcs]
return df
df = (
df
#Modify the dataframe:
.assign(new_column=...)
#Visualise a column from the modified df, without killing the chain
.pipe(lambda df_: transparent_pipe(df_, plt.ecdf(df_.new_column), display(df_), ...)
#...further chaining is possible
)
问题
是否有一种完全在线的方式可以做到这一点,而不需要定义transparent_pipe
?
最好只使用pandas
。
*来自《Effective Pandas 2:数据操作的固执模式》的提示,M. Harrison,2024 年。
**由于计算结果为 ,因此该.pipe
运算返回。df_
display(df_) or df_
None or df_
df_