【发布时间】:2016-12-21 16:31:35
【问题描述】:
我正在尝试创建一个从数据框中的列中删除“#1”的函数:
def formatSignalColumn(df):
for i,signal in enumerate(df['Signal list']):
df = df.set_value(i, 'Signal list', signal.replace(" #1", ""))
df = df.set_value(i, 'Signal list', signal.replace(" #2", ""))
return df
但是,当我通过它传递我的 DataFrame 时,它不会改变任何东西。
tlog = formatSignalColumn(tlog)
有趣的是,当我在函数外运行 for 循环时,它也不起作用,但是当我专门选择 i 和 signal 值时,它起作用了……
i = 0
signal = tlog['Signal list'][i]
tlog= tlog.set_value(i, 'Signal list', signal.replace(" #1", ""))
tlog= tlog.set_value(i, 'Signal list', signal.replace(" #2", ""))
这对我来说没有任何意义。有人有什么想法吗?
【问题讨论】:
-
你可以做
df['Signal list']=df['Signal list'].str.replace(' #1| #2','') -
这里的问题是您在迭代时正在修改数据,所以看起来您正在处理副本。