我正在执行以下操作来更新数据帧行:
val = "123"
row = df.loc[id, :]
t = type(row['col1'])
val = t(val)
df.loc[id, 'col1'] = val
如果我排[' col1'] = val,它不会更新原始数据帧。有没有办法在不使用.loc的情况下更新原始数据帧?
答案 0 :(得分:0)
更新以供以下评论
我认为简短的答案是否定的
有没有说“改变你已经取得的行”
这是因为Pandas中的操作会将副本而不是视图返回到原始DataFrame。有一个来自JeffR的StackOverflow帖子写了许多Pandas here
如果您尝试将val
分配给DataFrame中的一个单元格,则可以使用set_value
功能。该方法的文档是here。
val = "123"
row = df.loc[id, :]
t = type(row['col1'])
val = t(val)
df.set_value(id, 'col1', val)
如果您尝试将val
特定数据类型分配给列中的所有单元格,可以使用apply方法
def changeType(cell, val):
# You could pass the id or list of ids as well if you need to perform some logic with it
t = type(cell)
cell = t(val)
return cell
val = "123"
df.loc[:, 'col1'] = df.loc[:, 'col1'].apply(changeType, args=(val,))