Python 保留与其他表匹配的表行
我需要一些帮助来解决这个问题: 我有两个表,我想筛选第二个表B上的行,以便它只显示与表A具有匹配“名称”的行 例如: 表A A. B C 安妮 二 三 安妮 四 五 约翰 四 五 奥利维亚 四 五 假设您正在使用pandas,您可以尝试以下方法:dfC=dfB[dfB['A'].isindfA['A'].unique]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的列筛选表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