在翻轉迭代時,如果滿足條件,則更改值。但是,原始資料框保持不變。有沒有辦法解決這個問題?
(我知道 itertuples,iterrows loc 可以使用。但我想使用值。(更快))
import panda as pd
df = pd.read_csv(filename)
for value in df.values:
if A:
value[2] = 3
print(value) # changed
df.to_csv(newfilename) # unchanged
uj5u.com熱心網友回復:
CSV 也應該更改。我剛剛測驗了這個,它改變了:
import pandas as pd
df = pd.DataFrame({
'A': [0,1,0,0,1,1,0,1,0],
'B': [1,0,1,1,0,0,1,0,1],
})
for value in df.values:
if value[0]==0:
value[1]=5
print(value) # changed
df #also changed
df.to_excel("output.xlsx") #also changed
uj5u.com熱心網友回復:
正如 mozway 建議的那樣,嘗試矢量化代碼。當您使用 pandas 時,這通常是一件好事。
df.loc[CONDITION, COLUMN_NAME_TO_WRITE_TO] = NEW_VALUE
對于你的例子,也許像
import panda as pd
df = pd.read_csv(filename)
df.loc[A, df.columns[2]] = 3 # instead of df.columns[INDEX] you could directly use the column name
df.to_csv(newfilename)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414822.html
標籤:
上一篇:如何根據另一列真值填充一列?
