0
我做下面的更新數據幀的一行:更新大熊貓據幀行中的變量
val = "123"
row = df.loc[id, :]
t = type(row['col1'])
val = t(val)
df.loc[id, 'col1'] = val
如果我行[「COL1」] = VAL,它不會更新原始數據幀。有沒有辦法更新原始數據框而不使用.loc兩次?
我做下面的更新數據幀的一行:更新大熊貓據幀行中的變量
val = "123"
row = df.loc[id, :]
t = type(row['col1'])
val = t(val)
df.loc[id, 'col1'] = val
如果我行[「COL1」] = VAL,它不會更新原始數據幀。有沒有辦法更新原始數據框而不使用.loc兩次?
更新了的評論如下
相信短期答案是否定的,以
有什麼方法說:「改變你已經獲取行」
這是因爲Pandas中的操作將原始數據框的視圖複製到視圖中。 JeffR寫了一篇StackOverflow文章,他寫了大部分熊貓圖片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
與特定數據類型分配給列所有單元格,可以使用應用方法
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,))
df.loc [:,「COL1」] = VAL會爲所有行設置它,對吧?我只想要更新行匹配id。 set_value看起來像它會做我所需要的,但它不會需要另一個查找?有沒有說「改變你已經提取的行」,而不是「用這個id查找行,並改變它」? – ashic
我已經更新了我的答案,我更好地理解了你想問的問題。 – Josh