![](/img/trans.png)
[英]Update pandas dataframe row values from matching columns in a series/dict
[英]Pandas: for matching row indices - update dataframe values with values from other dataframe with a different column size
我正在努力使用行索引作為鍵更新 dataframe 中的值和另一個 dataframe 中的值。 Dataframes 在列數方面並不相同,因此只能對匹配的列進行更新。 使用下面的代碼意味着 df3 產生與 df4 相同的結果。 但是 df3 返回 None object。
誰能把我引向正確的方向? 看起來不是很復雜,但我似乎做對了
附言。 實際上,這 2 個數據幀比本例中的數據幀大很多(無論是行還是列)
import pandas as pd
data1 = {'A': [1, 2, 3,4],'B': [4, 5, 6,7],'C':[7,8,9,10]}
df1 = pd.DataFrame(data1,index=['I_1','I_2','I_3','I_4'])
print(df1)
data2 = {'A': [10, 40], 'B': [40, 70]}
df2 = pd.DataFrame(data2 ,index=['I_1','I_4'])
print(df2)
df3 = df1.update(df2)
print(df3)
data4 = {'A': [10, 2, 3,40],'B': [40, 5, 6,70],'C':[7,8,9,10]}
df4 = pd.DataFrame(data4 ,index=['I_1','I_2','I_3','I_4'])
print(df4)
```
pandas.DataFrame.update
返回無。 方法直接改調用object。
來源: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.update.html
對於您的示例,這意味着兩件事。
df3=none
df3 = df1.update(df2)
時, df1
發生了變化。 在您的情況下, df1
起看起來像df4
。 要寫入df3
並保持df1
不變,可以這樣做:
import pandas as pd
data1 = {'A': [1, 2, 3,4],'B': [4, 5, 6,7],'C':[7,8,9,10]}
df1 = pd.DataFrame(data1,index=['I_1','I_2','I_3','I_4'])
print(df1)
data2 = {'A': [10, 40], 'B': [40, 70]}
df2 = pd.DataFrame(data2 ,index=['I_1','I_4'])
print(df2)
#using deep=False if df1 should not get affected by the update method
df3 = df1.copy(deep=False)
df3.update(df2)
print(df3)
data4 = {'A': [10, 2, 3,40],'B': [40, 5, 6,70],'C':[7,8,9,10]}
df4 = pd.DataFrame(data4 ,index=['I_1','I_2','I_3','I_4'])
print(df4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.