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 со следующими условиями:
df3
df1
df2
A
Вывод 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 и join.Нет успешно.
concat
merge
join
попробуйте это,
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
Используйте append со вторым df2, созданным idxmax для первого True значения и фильтруйте по loc:
append
idxmax
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
Сначала вычислите логическую маску на df2:
mask = df2['A'] >= df1['A'].iloc[-1] # or df1['A'].max(), as required
Затем используйте pd.concat:
pd.concat
df3 = pd.concat([df1, df2[mask]], ignore_index=True)