【问题标题】:How can I apply a function to many columns in a dataframe using a single column as an argument?如何使用单列作为参数将函数应用于数据框中的多列?
【发布时间】:2021-12-12 22:36:22
【问题描述】:

我有一个包含 100 多列的数据框,我需要对其应用函数,但我不知道如何将第一列作为参数传递。

例如,如果我的表是:

df = pd.DataFrame({'argument':[1,2,0.5],
                   'day1':[4,5,6],
                   'day2':[5,1,2]})

   argument day1 day2 day3...
0  1.0      4    5
1  2.0      5    1
2  0.5      6    2

我有一个这样的函数(我的要复杂得多,这只是示例):

def function (i,j):
    return i * j

我希望我的输出是:

   argument day1 day2 day3...
0  1.0      4    5
1  2.0      10   2
2  0.5      3    1

这让我得到了非常奇怪的结果,有人知道我做错了什么吗?谢谢!

def function (i,j):
    return i- j
df = df.apply(function, axis=1, j=df['argument'])

【问题讨论】:

    标签: python pandas dataframe arguments apply


    【解决方案1】:

    首先,您的轴方向错误,应将其设置为 0 而不是 1。

    其次,如果你像这样应用你的函数,它会将函数应用到你的参数列。而且它不会和你想要的一样。

    所以,把你的代码改成这样

    import pandas as pd
    
    def function (i,j):
        return i * j
    
    df = pd.DataFrame({'argument':[1,2,0.5],
                       'day1':[4,5,6],
                       'day2':[5,1,2]})
    
    df2 = df.iloc[:,-2:].apply(function,axis=0,j=df['argument'])
    df.iloc[:,-2:] = df2
    print(df)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多