df1
A B
0 0.00 514.51
1 0.75 514.51
2 1.10 514.42
3 3.52 514.41
4 5.59 514.43
df2
A B
0 2.00 520.00
1 3.00 521.00
2 4.00 524.00
3 5.00 529.00
4 6.00 531.00
5 7.00 532.00
我需要创建一个新的df3
,包含下一个条件:
df1
:所有数据。df2
:来自上一个df1
A
值的数据(我的意思是,上次df1
A
值为5.59;首先df2
{ {1}}我希望在新A
中包含的值为6.00)输出df3
应为:
df3
我曾尝试使用 A B
0 0.00 514.51
1 0.75 514.51
2 1.10 514.42
3 3.52 514.41
4 5.59 514.43
5 6.00 531.00
6 7.00 532.00
,concat
和merge
。没有成功。
答案 0 :(得分:2)
首先在df2
上计算布尔掩码:
mask = df2['A'] >= df1['A'].iloc[-1] # or df1['A'].max(), as required
然后使用pd.concat
:
df3 = pd.concat([df1, df2[mask]], ignore_index=True)
答案 1 :(得分:2)
使用append
将idxmax
创建的第二个df2
用于第一个True
值并按loc
过滤:
df = df1.append(df2.loc[(df2['A'] >= df1['A'].values[-1]).idxmax():])
print (df)
A B
0 0.00 514.51
1 0.75 514.51
2 1.10 514.42
3 3.52 514.41
4 5.59 514.43
4 6.00 531.00
5 7.00 532.00
<强>详细强>:
print (df2.loc[(df2['A'] >= df1['A'].values[-1]).idxmax():])
A B
4 6.0 531.0
5 7.0 532.0
答案 2 :(得分:0)
试试这个,
pd.concat([df1,df2[df2['A']>df1['A'].max()]])
输出:
A B
0 0.00 514.51
1 0.75 514.51
2 1.10 514.42
3 3.52 514.41
4 5.59 514.43
4 6.00 531.00
5 7.00 532.00