如何根据其两列的比较来过滤大表的行?

问题描述 投票:0回答:0

我有一张大桌子,里面有关于建筑物的信息。在 56.267 行中表示了有关特定房间的数据集。这些行由它们的 Room-ID 和 Building-ID 标识。 并且在大表中显示了重复的建筑物 ID,因为每个建筑物/建筑物 ID 都有多个房间/房间 ID。

另一列,或者如果你想要表格,显示 607 个特定的建筑物 ID。在显示超过 607 个建筑物 ID 的大表中,我只想显示这 607 个建筑物 ID。其中我还想保留重复项(请参阅 table_A 列“A_new”条目 4 和 4) 所以这个特定的列有点像参考列,我想根据它过滤我的大表。

我重新创建了一个类似的数据集,如下所示,其中 table_A 是我要过滤的大表,table_B 代表参考列/表:

table_A = {
    'A': [1, 2, 3, 4, 4, 5],
    'more stuff': ["yes", 10, 100, 150, 200, 250],
    'even_more stuff': ["no", 10, 50, 100, 200, 250],
    'B': [2,4]}
table_B = {
    'B': [2, 4]}

我还将“B”作为 table_A 中的一列,以防万一它也需要作为一列。

然后我尝试使用 groupby 方法并定义了以下 Dataframes:

table_A_df = pd.DataFrame(table_A, columns=['A','more stuff','even_more stuff','B'])
table_B_df = pd.DataFrame(table_B, columns=['B'])

我的目标是如下表格:

table_A_filtered = {
    'A_new': [2, 4, 4],
    'more stuff': [10, 150, 200],
    'even_more stuff': [10, 100, 200]}

终于通过以下方式获得它:

table_A_filtered = table_A_df.groupby(["B"])

它没有工作,因为参考列“B”应该和其他列一样长。 错误消息说明 “ValueError:所有数组的长度必须相同”和“KeyError:‘B’”

但是我希望能够根据“B”列的条目和空条目进行过滤,因为没有问题。

我很高兴得到帮助以找到解决方案。也许我使用 groupby 的方法甚至不是一个好的开始。

非常感谢。

python filtering
© www.soinside.com 2019 - 2024. All rights reserved.