python - 为一行代码编写一个函数?
问题描述
我目前正在使用 pandas DataFrame 并遇到了一个问题。是否应该有一个单独的函数来设置索引,或者它是否会使代码变得复杂,因为无论如何你都可以简单地编写一行代码。
def set_time_as_index(df):
return df.set_index('time')
当前代码的简化版本:
def create_df_rdy_for_export(input_data):
dframe = pd.DataFrame(input_data)
dframe = set_time_as_index(dframe)
return dframe
还是写得更好:
def create_df_rdy_for_export(input_data):
dframe = pd.DataFrame(input_data)
dframe = dframe.set_index('time')
return dframe
我只是将索引设置为时间列。而且由于它在脚本中只出现一次,所以没有必要单独编写一个函数,但我已经习惯了,没有函数的感觉很奇怪。是否有任何约定或性能权衡?
解决方案
这是一个基于意见的问题,但我会回答这个问题,因为在使用 Pandas 数据框时有一些约定。
一种常见的做法是连锁操作。您可以简单地按顺序应用方法。例如(为清楚起见添加一个额外的方法):
def create_df_rdy_for_export(input_data):
dframe = pd.DataFrame(input_data)\
.set_index('time')\
.set_axis(['col1', 'col2', 'col3'], axis=1)
return dframe
每条线代表一种不同的方法。在我看来,没有必要编写单独的函数来调用单个方法。对于更复杂的数据框操作,您可以使用pd.DataFrame.pipe
. 例如:
def format_dataframe(df):
df = df.set_index('time')\
.set_axis(['col1', 'col2', 'col3'], axis=1)
return df
def create_df_rdy_for_export(input_data):
dframe = pd.DataFrame(input_data).pipe(format_dataframe)
return dframe
这里的好处是您可以仅将逻辑的操作部分重用于其他用途,并且pipe
仍然允许您链接其他方法。
推荐阅读
- amazon-web-services - aws cloudformation 弹性搜索堆栈
- javascript - 使用 uikit 时未显示 Google 图表工具提示
- pandas - 如何计算具有多列整数的数据框中的行的重复项
- vue.js - 如何在 Vuetify 的表格中显示嵌套列表
- python - 如何将形状文件添加到 python dash 中的地图?
- scala - 如何用同一数据框中其他列的实际列值替换一列中的字符串值?
- c# - 二维球角色控制器
- gcloud - 您可以更改 gcloud 中的默认网络吗?
- python-3.x - 响应头 Content-Type:application/xop+xml 和 lxml.etree.fromstring 解析
- android - 一旦顶部的recyclerview变大,我如何制作固定在布局滚动底部的按钮