我有兩個pandas.DataFrame
s的重疊列和指數,等如何從另一個DataFrame填充DataFrame,添加行並替換空值?
X = pandas.DataFrame({"A": ["A0", "A1", "A2"], "B": ["B0", None, "B2"]},
index=[0, 1, 2])
Y = pandas.DataFrame({"A": [V, "A3"], "B": ["B1", "B3"], "C": ["C1", "C3"]},
index=[1, 3])
我想由值Y
,徘徊無論數據丟失延長X
,保持相同的列。也就是說
如果
V=="A1"
或pandas.isnull(V)
,我想獲得>>> X.fill_from(Y) A B 0 A0 B0 1 A1 B1 2 A2 B2 3 A3 B3
B1
已從Y
充滿因爲以前的值,None
,是大熊貓空值的值。已添加行3
,因爲該行中的所有值都未在X
中給出,因爲X
沒有此行。如果
V!="A1"
,我想得到關於數據幀包含不兼容數據這一事實的異常。
如果我確信我的數據沒有丟失的數據,pandas.concat((X, Y), join_axes=[X.columns])
會做擴展,並DataFrame.index.get_duplicates()
會告訴我,如果有誤匹配的行。
困難的部分是確保數據丟失不採取從目前的數據不同,但可以填寫,我不看怎麼做纔不至於迭代中get_duplicates()
每一個可能的對,手動複製數據。
This question with a similar title是沒有真正相關的。使用X[X.isnull()] = Y
(如this other question)不適用於get_duplicates()
錯誤匹配檢查。
只是略讀,但你有沒有嘗試'combine_first'? – IanS
'combine_first'看起來非常適合匹配數據,謝謝。現在我需要看看如何獲取不匹配數據的錯誤(因爲比較數據幀也不明顯)。 – Anaphory
由於@IanS建議你可以調用'combine_first'' X.combine_first(Y)[['A','B']]'來實現你想要的結果 – EdChum