【问题标题】:write a python function using ```def``` from 3 pre-existing columns in a dataframe; columns 1 and 2 as inputs = column 3 as output使用数据框中 3 个预先存在的列中的 ```def``` 编写 python 函数;第 1 列和第 2 列作为输入 = 第 3 列作为输出
【发布时间】:2020-08-10 15:40:49
【问题描述】:

我的数据框看起来像这样。 3列。我要做的就是编写一个函数,当前两列是输入时,对应的第三列(GHG 强度)是输出。我希望能够输入任何属性名称和年份并获得相应的温室气体强度值。我不能强调必须使用def 将其编写为函数。请帮忙!

                             Property Name  Data Year  \
467                             GALLERY 37       2018   
477                        Navy Pier, Inc.       2016   
1057                            GALLERY 37       2015   
1491                       Navy Pier, Inc.       2015   
1576                            GALLERY 37       2016   
2469                   The Chicago Theatre       2016   
3581                       Navy Pier, Inc.       2014   
4060                        Ida Noyes Hall       2015   
4231               Chicago Cultural Center       2015   
4501                            GALLERY 37       2017   
5303                         Harpo Studios       2015   
5450                   The Chicago Theatre       2015   
5556               Chicago Cultural Center       2016   
6275   MARTIN LUTHER KING COMMUNITY CENTER       2015   
6409   MARTIN LUTHER KING COMMUNITY CENTER       2018   
6665                        Ida Noyes Hall       2017   
7621                        Ida Noyes Hall       2018   
7668   MARTIN LUTHER KING COMMUNITY CENTER       2017   
7792                   The Chicago Theatre       2018   
7819                        Ida Noyes Hall       2016   
8664   MARTIN LUTHER KING COMMUNITY CENTER       2016   
8701                   The Chicago Theatre       2017   
9575               Chicago Cultural Center       2017   
10066              Chicago Cultural Center       2018   

       GHG Intensity (kg CO2e/sq ft)  
467                             7.50  
477                            22.50  
1057                            8.30  
1491                           23.30  
1576                            7.40  
2469                            4.50  
3581                           17.68  
4060                           11.20  
4231                           13.70  
4501                            7.90  
5303                           18.70  
5450                             NaN  
5556                           10.30  
6275                           14.10  
6409                           12.70  
6665                            8.30  
7621                            8.40  
7668                           12.10  
7792                            4.40  
7819                           10.20  
8664                           12.90  
8701                            4.40  
9575                            9.30  
10066                           7.50 

【问题讨论】:

    标签: python pandas function dataframe


    【解决方案1】:

    这是一个示例,使用不同的数据框进行测试:

    import pandas as pd
    
    df = pd.DataFrame(data={'x': [3, 5], 'y': [4, 12]})
    
    def func(df, arg1, arg2, arg3):
        ''' agr1 and arg2 are input columns; arg3 is output column.'''
        df = df.copy()
        df[arg3] = df[arg1] ** 2 + df[arg2] ** 2
        return df
    

    结果是:

    print(func(df, 'x', 'y', 'z'))
    
       x   y    z
    0  3   4   25
    1  5  12  169
    

    【讨论】:

    • 但在此示例中创建了一个新列。我根本不想创建一个新列。我想打印一个预先存在的第三列,前两列作为输入。我怎么做?谢谢!
    • 请您提供一个小样本输入数据框和预期输出?更多信息在这里:stackoverflow.com/questions/20109391/…
    • 整个数据框都在上面。例如,我希望输入为 year= 2016 和 property_name= GALLERY 37,然后输出为 7.4(第 3 列中的相应值。这有意义吗?
    • 我误会了。如果您想执行查找,那么来自@Kuldip Chaudhari 的响应将起作用。
    【解决方案2】:

    你可以试试这个代码

    def GHG_Intensity(PropertyName, Year):
        Intensity = df[(df['Property Name']==PropertyName) & (df['Data Year']==Year)]['GHG Intensity (kg CO2e/sq ft)'].to_list()
        return Intensity[0] if len(Intensity) else 'GHG Intensity Not Available'
    
    print(GHG_Intensity('Navy Pier, Inc.', 2016))
    

    【讨论】:

    • 成功了。我已经为此苦苦挣扎了很长时间。谢谢你。你救了我。我锄头你的生活带给你永恒的快乐和幸福。
    猜你喜欢
    • 2016-10-20
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多