我有兩個資料幀,一個大的(df1)和一個小的(df2)。兩者都具有相同的列和索引。
df1 = pd.read_csv(milkProdFile, delimiter=';', dtype=str, names=cols).set_index(["ANIM", "NULACT"], drop=False)
df2 = pd.read_csv(correctionFile, delimiter=';', dtype=str, names=cols).set_index(["ANIM", "NULACT"], drop=False)
我希望使用 Pandas 的更新方法將大資料幀 df1 中的行替換為小資料幀 df2 中的匹配行(意味著具有匹配索引的行)。
df1.update(df2)
df1.to_csv("./corrected_lacts.txt", sep=';', header=False, index=False)
但是,執行完這段代碼后,什么也沒發生。Corrected_lacts.txt 文本檔案仍包含用于創建 df1 的 MilkProdFile 中包含的原始值。
為什么會發生這種情況,我該如何解決?
編輯:
vladislavAks 的回答成功了。我將 移到set_index我的代碼的末尾并且它起作用了。非常感謝 !
uj5u.com熱心網友回復:
.set_index更新后試試。我用示例資料嘗試了這段代碼,它有效:
df = pd.DataFrame({'ANIM': [1, 2, 3],
'NULACT': [400, 500, 600],
'target': [1, 1, 1]}) # without ".set_index(["ANIM", "NULACT"], drop=False)"
new_df = pd.DataFrame({'ANIM': [4, 5, 6],
'NULACT': [7, 8, 9],
'target': [0, 1, 0]})
df.update(new_df)
df.set_index(["ANIM", "NULACT"], drop=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/365281.html
上一篇:將csv匯入python串列
下一篇:用管道字符替換CSV分隔符
