簡體   English   中英

Pandas:用於匹配行索引 - 使用不同列大小的其他 dataframe 的值更新 dataframe 值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM