【问题标题】:how to create a 3rd dataset based on conditions from other 2 datasets in python如何根据python中其他2个数据集的条件创建第三个数据集
【发布时间】:2020-10-30 05:44:07
【问题描述】:

我有这个任务,我需要根据其他两个连接的数据集创建一个数据集。

df = pd.DataFrame(columns=['ID','P1','P2'],
               data=[[1, 2, 0], [2,1,0], [3, 1, 2], [4, 2, 1],
                    [5, 1, 2], [6, 0, 1], [7, 1, 0]])
fp = pd.DataFrame(columns=['ID','FP'],
               data=[[1, 'fp'], [2,'i'], [3, 'i'], [4, 'fp'],
                    [5, 'fp'], [6, 'fp'], [7, 'i']])

如果 fp 数据集“FP”列显示“fp”,我的任务是创建第三个数据集,其中仅包含 df 数据集中的 id、p1 和 p2。

我试过了

df2 = np.where((df['ID']==fp['ID'])&fp['FP']=='fp)

但是没有用

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我确信有比我更好的方法,但这是我会做的

    import pandas as pd
    df = pd.DataFrame(columns=['ID','P1','P2'],
                   data=[[1, 2, 0], [2,1,0], [3, 1, 2], [4, 2, 1],
                        [5, 1, 2], [6, 0, 1], [7, 1, 0]])
    fp = pd.DataFrame(columns=['ID','FP'],
                   data=[[1, 'fp'], [2,'i'], [3, 'i'], [4, 'fp'],
                        [5, 'fp'], [6, 'fp'], [7, 'i']])
    
    # Merging dataframes
    res = df.merge(fp)
    
    # Filtering
    res = res[res['FP'] == 'fp'].drop(columns=['FP'])
    res
    

    结果

        ID  P1  P2
    0   1   2   0
    3   4   2   1
    4   5   1   2
    5   6   0   1
    

    【讨论】:

      【解决方案2】:

      您可以将Series.isinboolean indexing 一起使用。

      idx = fp['ID'][fp['FP'].eq('fp')]
      df.loc[df['ID'].isin(idx)]
      
         ID  P1  P2
      0   1   2   0
      3   4   2   1
      4   5   1   2
      5   6   0   1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 2023-02-16
        • 2022-07-18
        相关资源
        最近更新 更多