【发布时间】:2018-07-06 14:41:20
【问题描述】:
我刚刚开始使用用户定义的函数,所以这可能不是一个很复杂的问题,请见谅。
我有几个数据框,它们都有一个名为“interval_time”的列(例如),我想将此列重命名为“时间戳”,然后将此重命名的列放入索引中。
我知道我可以用这个手动完成;
df = df.rename(index=str, columns={'interval_time': 'Timestamp'})
df = df.set_index('Timestamp')
但现在我想定义一个名为 rename 的函数来为我做这件事。我已经看到这是可行的;
def rename_col(data, col_in='tempus_interval_time', col_out='Timestamp'):
return data.rename(index=str, columns={col_in: col_out}, inplace=True)
但是当我尝试添加第二个函数时,它似乎没有做任何事情,但是如果我将第二部分定义为它自己的函数并运行它,它似乎确实可以工作。
我正在尝试这个
def rename_n_index(data, col_in='tempus_interval_time', col_out='Timestamp'):
return data.rename(index=str, columns={col_in: col_out}, inplace=True)
return data.set_index('Timestamp', inplace=True)
我使用的数据框具有以下形式;
df_scada
interval_time A ... X Y
0 2010-11-01 00:00:00 0.0 ... 396.36710 381.68860
1 2010-11-01 00:05:00 0.0 ... 392.97974 381.40634
2 2010-11-01 00:10:00 0.0 ... 390.15695 379.99493
3 2010-11-01 00:15:00 0.0 ... 389.02786 379.14810
【问题讨论】:
-
您是否尝试过将它们链接在一起?
return df.rename(...).set_index(...) -
当一个 return 语句在 python 中被求值时,它退出函数调用。任何进一步的返回语句都将被忽略。一次返回多个对象的常用方法是返回包含对象的元组。但是,正如 Martijn 的回答所指出的那样,如果您正在修改对象,则不必返回任何内容。
标签: python pandas user-defined-functions