我需要用另一個數據幀的相互日期索引替換一個數據幀中的值。這里有特定的日期(第 5 天到第 10 天),其中 B 列的值需要替換為 dataframe2 中的值。我看過合并/加入/替換/等,但不知道如何做到這一點。import pandas as pdimport numpy as nplist1 = [10,80,6,38,41,54,12,280,46,21,46,22]list2 = [4,3,22,6,'NA','NA','NA','NA','NA','NA',452,13]list3 = ['2016-01-01', '2016-01-02','2016-01-03','2016-01-04','2016-01-05','2016-01-06', '2016-01-07','2016-01-08','2016-01-09','2016-01-10','2016-01-11','2016-01-12',]dat = pd.DataFrame({'A' : list1, 'B' : list2, 'Date' : list3}, columns = ['A', 'B', 'Date'])dat['Date'] = pd.to_datetime(dat['Date'], format = '%Y-%m-%d')dat = dat.set_index('Date')print(dat)值2016-01-05 to 2016-01-10需要替換為第二個數據框中的值: A BDate 2016-01-01 10 42016-01-02 80 32016-01-03 6 222016-01-04 38 62016-01-05 41 NA2016-01-06 54 NA2016-01-07 12 NA2016-01-08 280 NA2016-01-09 46 NA2016-01-10 21 NA2016-01-11 46 4522016-01-12 22 13這是第二個數據幀,這些值需要“映射”到第一個數據幀中:list4 = [78,15,16,79,71,90]list5 = ['2016-01-05','2016-01-06','2016-01-07','2016-01-08','2016-01-09','2016-01-10']dat2 = pd.DataFrame({'B' : list4, 'Date' : list5}, columns = ['B', 'Date'])dat2['Date'] = pd.to_datetime(dat2['Date'], format = '%Y-%m-%d')dat2 = dat2.set_index('Date')print(dat2) BDate 2016-01-05 782016-01-06 152016-01-07 162016-01-08 792016-01-09 712016-01-10 90最終輸出應如下所示: A BDate 2016-01-01 10 42016-01-02 80 32016-01-03 6 222016-01-04 38 62016-01-05 41 782016-01-06 54 152016-01-07 12 162016-01-08 280 792016-01-09 46 712016-01-10 21 902016-01-11 46 4522016-01-12 22 13任何幫助將不勝感激!謝謝你。
2 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
一種使用方式 combine_first
df1 = dat2.combine_first(dat)
print (df1)
A B
Date
2016-01-01 10 4.0
2016-01-02 80 3.0
2016-01-03 6 22.0
2016-01-04 38 6.0
2016-01-05 41 78.0
2016-01-06 54 15.0
2016-01-07 12 16.0
2016-01-08 280 79.0
2016-01-09 46 71.0
2016-01-10 21 90.0
2016-01-11 46 452.0
2016-01-12 22 13.0
或使用 DataFrame.update
dat.update(dat2)
或者你也可以使用 .loc
dat.loc[dat2.index, 'B'] = dat2.loc[:, 'B']
添加回答
舉報
0/150
提交
取消