我有两个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