求助:基于行条件合并两个DataFrame生成目标df3的方法
没问题,我来帮你搞定这个需求!其实核心思路就是先筛选出df2中符合条件的行,再和df1合并就行,之前的操作没成功大概率是没做好筛选这一步。
具体实现步骤
- 先获取df1最后一行的A值作为筛选阈值
- 从df2中挑出A值大于这个阈值的行
- 把df1和筛选后的df2纵向合并,得到目标df3
完整代码示例
import pandas as pd # 还原你提供的示例数据 df1 = pd.DataFrame({ 'A': [0.00, 0.75, 1.10, 3.52, 5.59], 'B': [514.51, 514.51, 514.42, 514.41, 514.43] }) df2 = pd.DataFrame({ 'A': [2.00, 3.00, 4.00, 5.00, 6.00, 7.00], 'B': [520.00, 521.00, 524.00, 529.00, 531.00, 532.00] }) # 步骤1:获取df1最后一行的A值作为筛选阈值 threshold = df1['A'].iloc[-1] # 步骤2:筛选df2中A值大于阈值的行 df2_filtered = df2[df2['A'] > threshold] # 步骤3:合并两个DataFrame,重置索引得到目标df3 df3 = pd.concat([df1, df2_filtered], ignore_index=True) print(df3)
代码说明
df1['A'].iloc[-1]:通过iloc[-1]快速定位到df1的最后一行,取出A列的值(也就是5.59)作为筛选条件df2[df2['A'] > threshold]:用布尔索引筛选出df2中符合要求的行,这里会得到A为6.00和7.00的两行数据pd.concat([df1, df2_filtered], ignore_index=True):concat是做纵向追加的正确工具,ignore_index=True会重置合并后的索引,让它和你想要的目标输出完全一致
之前用merge或join没成功是因为这两个方法是用来做横向合并或者按关键字匹配合并的,而你的需求是简单的纵向追加符合条件的行,所以concat才是合适的选择,关键是要先做好筛选~
内容的提问来源于stack exchange,提问作者Tie_24
相关产品推荐
相关产品推荐

