Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保留与其他表匹配的表行_Python_Jupyter Notebook - Fatal编程技术网

Python 保留与其他表匹配的表行

Python 保留与其他表匹配的表行,python,jupyter-notebook,Python,Jupyter Notebook,我需要一些帮助来解决这个问题: 我有两个表,我想筛选第二个表B上的行,以便它只显示与表A具有匹配“名称”的行 例如: 表A A. B C 安妮 二 三 安妮 四 五 约翰 四 五 奥利维亚 四 五 假设您正在使用pandas,您可以尝试以下方法:dfC=dfB[dfB['A'].isindfA['A'].unique] 这样,您将根据表B的列筛选表B,查找表A的列A中的值。SELECT*FROM table_B,其中A在SELECT A FROM table_A中使用df.join可以为您完成任

我需要一些帮助来解决这个问题: 我有两个表,我想筛选第二个表B上的行,以便它只显示与表A具有匹配“名称”的行

例如:

表A

A. B C 安妮 二 三 安妮 四 五 约翰 四 五 奥利维亚 四 五 假设您正在使用pandas,您可以尝试以下方法:dfC=dfB[dfB['A'].isindfA['A'].unique]


这样,您将根据表B的列筛选表B,查找表A的列A中的值。

SELECT*FROM table_B,其中A在SELECT A FROM table_A中使用df.join可以为您完成任务

import pandas as pd

dfA = pd.DataFrame(dict(A=['Anne','Anne','Jhon','Olivia'],B=[2,2,4,5],C=[3,5,5,5]))  
dfB = pd.DataFrame(dict(A=['Anne','Anne','Anne','Kristan','Paul','Olivia','Olivia'],
                        Money=[2,4,4,4,4,4,4],Rent=[3,5,5,5,5,5,5]))
dfB = dfB.set_index('A')
dfA.groupby('A').first().join(dfB).loc[:,['Money','Rent']]
        Money  Rent
A
Anne      2.0   3.0
Anne      4.0   5.0
Anne      4.0   5.0
Jhon      NaN   NaN
Olivia    4.0   5.0
Olivia    4.0   5.0
编辑:最后一行的进一步解释

groupby'A'。首先创建一个具有唯一名称的数据框架,任意选择B列和C列的第一个条目,因为您希望以任何方式消除这些条目。然后,joindfB使用表a的唯一值作为左表,使用dfB作为右表进行左连接。loc[:,['Money','Rent']]选择要从表A中删除B和C列的列。

您可以输入并附加:

印刷品:

        A Money   Rent
0    Anne   Two  Three
1    Anne  Four   Five
2    Anne  Four   Five
3  Olivia  Four   Five
4  Olivia  Four   Five
5    Jhon   NaN    NaN

Jhon不在表B中,这使您的说明有点不清楚。您的意思是只在表B中保留表A中显示的名称,并在表B中添加表A中显示但未在表B中显示为NaN的名称吗?完全正确!我想在表B中保留表A中出现的名称,但同时我想将不在B中的名称添加为Nan
        A Money   Rent
0    Anne   Two  Three
1    Anne  Four   Five
2    Anne  Four   Five
3  Olivia  Four   Five
4  Olivia  Four   Five
5    Jhon   NaN    NaN