【问题标题】:assign value to pandas column based on data in another dataframe根据另一个数据框中的数据为 pandas 列赋值
【发布时间】:2018-07-19 16:59:52
【问题描述】:

我有 2 个数据框

df1
ID ID2 NUMBER
1 2 null

df2
ID ID2 NUMBER 
1 2 1
1 2 2
1 2 3

因此,当使用 ID 和 ID2 在 df1 和 df2 之间进行合并时,我会得到重复的列,因为 df1 在 df2 中有 3 个匹配项。我想为 df1 分配一个随机数并将其用于合并,这样我总是得到 1 对 1 的合并。 问题是我的数据集相当大,有时我在 df2 中只有 1 行(因此合并工作正常),有时我在 df2 中有 10+ 行。我想使用以下方法为 df1 分配一个数字:

rand(1,len(df1[(df1.ID=1) & (df1.ID2=2]))

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我想我找到了一个解决方案,我将其发布在这里,以便其他人可以告诉我是否有更好的方法。

    def select_random_row(grp):
        ID= grp.ID.iloc[0]
        ID2= grp.ID2.iloc[0] 
        return random.randint(1, len(df1[(df1.ID== ID) & (df1.ID2 == ID2)]))
    
    df2['g'] = df2.groupby(['ID','ID2']).apply(select_random_row)
    

    编辑: 这是在大型数据集上放慢速度的方法......我决定在合并之前只使用 drop_duplicates 并保留第一条记录。这不是我想要的随机,但总比没有好

    【讨论】:

      猜你喜欢
      • 2020-11-26
      • 2023-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 2017-02-10
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多