我目前正在使用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
仍然允许你链接其他方法。