Pandas加入(合并?)数据帧,只保留唯一的指标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas加入(合并?)数据帧,只保留唯一的指标相关的知识,希望对你有一定的参考价值。
我有一个带日期索引的数据框。有几个日期不知何故失踪了。我将这称为数据帧A
。我有另一个数据框,其中包含相关日期。我将这个数据框称为B
。
我想合并两个数据帧:
保留A
的所有索引并加入B
,但我不希望B
中与A
共享索引的任何行。也就是说,我只想从A
返回的B
中缺少的行。
这最容易实现的是什么?
注意:
对于我拥有的数据数据库,这种行为是正确的。我将做大约400次。
答案
我相信你需要qazxsw poi:
Index.difference
编辑:
B.loc[B.index.difference(A.index)]
A = pd.DataFrame({'A':range(10)}, index=pd.date_range('2019-02-01', periods=10))
B = pd.DataFrame({'A':range(10, 20)}, index=pd.date_range('2019-01-27', periods=10))
df = pd.concat([A, B.loc[B.index.difference(A.index)]]).sort_index()
print (df)
A
2019-01-27 10
2019-01-28 11
2019-01-29 12
2019-01-30 13
2019-01-31 14
2019-02-01 0
2019-02-02 1
2019-02-03 2
2019-02-04 3
2019-02-05 4
2019-02-06 5
2019-02-07 6
2019-02-08 7
2019-02-09 8
2019-02-10 9
另一答案
如果我正确地阅读了这个问题,你想要的是什么
df1= pd.concat([A, B])
df1 = df1[~df1.index.duplicated()].sort_index()
print (df1)
A
2019-01-27 10
2019-01-28 11
2019-01-29 12
2019-01-30 13
2019-01-31 14
2019-02-01 0
2019-02-02 1
2019-02-03 2
2019-02-04 3
2019-02-05 4
2019-02-06 5
2019-02-07 6
2019-02-08 7
2019-02-09 8
2019-02-10 9
例如:
B[~B.index.isin(A.index)]
要使用来自In [192]: A
Out[192]:
Empty DataFrame
Columns: []
Index: [1, 2, 4, 5]
In [193]: B
Out[193]:
Empty DataFrame
Columns: []
Index: [1, 2, 3, 4, 5]
In [194]: B[~B.index.isin(A.index)]
Out[194]:
Empty DataFrame
Columns: []
Index: [3]
的数据,否则从A
获取,你可以做
B
或者,假设pd.concat([A, B[~B.index.isin(A.index)]).sort_index()
不包含您想要保留的空元素,您可以采取不同的方法并采取类似的方法
A
另一答案
虽然已经有了很好的答案我想分享这个,因为它太短了
pd.DataFrame(A, index=B.index).fillna(B)
以上是关于Pandas加入(合并?)数据帧,只保留唯一的指标的主要内容,如果未能解决你的问题,请参考以下文章