Python支持Dataframe,合并df行,同时跳过重叠的行

2024-04-24 21:17:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这个标题不太清楚,但它是我能描述的最好的。在

我有这样的数据帧:

data1 = np.matrix([[4,75,2,5,84,2,6,5,554],[4,6,67,6,4,5,8,5,8]]).T
data2 = np.matrix([[3,46,4,555,556,557,558,559,560],[1,2,4,1,3,5,3,1,5]]).T

data1 = pd.DataFrame(data1)
data2 = pd.DataFrame(data2)

>>> data1
     0   1
0    4   4
1   75   6
2    2  67
3    5   6
4   84   4
5    2   5
6    6   8
7    5   5
8  554   8


>>> data2
     0  1
0    3  1
1   46  2
2    4  4
3  555  1
4  556  3
5  557  5
6  558  3
7  559  1
8  560  5

我想把data2追加到data1的底部。但是,我想附加data2的行,其column1值大于或等于554,这是data1的column1的最后一行

以下是我想要的输出:

^{2}$

因此,当追加到data1时,data2的一些第一行将被跳过。在

假定data1的最后一行是其最大值,data2的行排序在data1的最后一个值之后,即554

用熊猫工具箱做这项工作有什么优雅的方法吗?在


Tags: 数据方法标题dataframe排序np工具箱matrix
1条回答
网友
1楼 · 发布于 2024-04-24 21:17:18

^{}与第二个筛选器DataFrame一起使用^{}

print (data1.iloc[-1, 0])
554

df = pd.concat([data1, data2[data2[0] > data1.iloc[-1, 0]]], ignore_index=True)
print (df)
      0   1
0     4   4
1    75   6
2     2  67
3     5   6
4    84   4
5     2   5
6     6   8
7     5   5
8   554   8
9   555   1
10  556   3
11  557   5
12  558   3
13  559   1
14  560   5

同样,对于一般溶液,按max值进行比较:

^{pr2}$

自定义列名称的解决方案:

data1 = pd.DataFrame(data1, columns=list('ab'))
data2 = pd.DataFrame(data2, columns=list('ab'))

print (data1.iloc[-1, data1.columns.get_loc('a')])
554

data22 = data2[data2['a'] > data1.iloc[-1, data1.columns.get_loc('a')]]
df = pd.concat([data1, data22], ignore_index=True)
print (df)
      a   b
0     4   4
1    75   6
2     2  67
3     5   6
4    84   4
5     2   5
6     6   8
7     5   5
8   554   8
9   555   1
10  556   3
11  557   5
12  558   3
13  559   1
14  560   5

相关问题 更多 >