【问题标题】:Apply apply() function to multiple columns in pandas?将apply()函数应用于熊猫中的多个列?
【发布时间】:2020-12-01 21:01:56
【问题描述】:

我曾经在这样的数据框中“组合”一列:

       combined

 0   0.97,0.92,0.65,0.24,0.15,0.19   
 1   0.96,0.86,0.69,0.38,0.56,0.78   
 2   0.64,0.69,0.93,0.07,0.73,0.05
 3   0.29,0.56,0.35,0.76,0.19,0.07

所以当我尝试应用一个numpy函数frequency_changer()时,我只需要这样做:

def frequency_changer(y):
    x_val_30 = [] 
    for i in range(0, len(y), 4):
        x_val_30.append(i)


    x_val = [] 
    for i in range(len(y)):  
        x_val.append(i)
    y_val = y
    cs = CubicSpline(x_val, y_val)
    x2 = cs(x_val_30)
    return x2


df['combined']=df['combined'].apply(frequency_changer)

现在,我的新数据框有很多列,每列都有一个值。

df_new

      0      1       2       3       4       5  
0   0.97    0.92    0.65    0.24    0.15    0.19    
1   0.96    0.86    0.69    0.38    0.56    0.78    
2   0.64    0.69    0.93    0.07    0.73    0.05
3   0.29    0.56    0.35    0.76    0.19    0.07

我应用了相同的功能,它不再起作用了。在新的数据框中,相同的函数减少了总行数。 (我想要一个适用于每行长度的函数)。 我该如何解决?谢谢!

【问题讨论】:

    标签: pandas numpy dataframe


    【解决方案1】:

    尝试使用以下内容。这应该会为您提供与在 combined 列上运行上述函数所获得的相同输出。

    def frequency_changer(y):
        x_val_30 = [] 
        for i in range(0, len(y), 4):
            x_val_30.append(i)
    
    
        x_val = [] 
        for i in range(len(y)):  
            x_val.append(i)
        y_val = y
        cs = CubicSpline(x_val, y_val)
        x2 = cs(x_val_30)
        return x2
    
    
    #Original df
    df['combined'].apply(frequency_changer)
    
    0    [0.97, 0.15]
    1    [0.96, 0.56]
    2    [0.64, 0.73]
    3    [0.29, 0.19]
    Name: combined, dtype: object
    
    #For new df
    new_out = new_df.T.apply(frequency_changer).T  #<------
    print(new_out)
    
          0     1
    0  0.97  0.15
    1  0.96  0.56
    2  0.64  0.73
    3  0.29  0.19
    

    如果您想将 2 列合并到一个列表中,就像您的函数对前一个 df 的行为一样,那么只需使用 new_out.values.tolist() 并将其存储在新数据框或新列中。

    【讨论】:

    • 谢谢!我需要重新启动会话并尝试一下。这可能需要一些时间。是那个.T,你用Transpose函数吗?
    • 效果很好。谢谢@Akshay。真正聪明的解决方案
    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多