【问题标题】:Update Multiple Fields of Dataframe from Function return values using Apply, Python 3.6使用Apply,Python 3.6从函数返回值更新数据框的多个字段
【发布时间】:2019-09-10 10:26:29
【问题描述】:

我有带有“Indicator_Name”字段的数据框,其中包含一些文本,我正在应用一些返回 2 个值并需要在数据框中更新相同值的函数

函数“String_Year_Pick_V2”返回两个值,如“XYZ”、“ABC”,需要将这些值与每个“Indicator_Name”相加

我试过下面的脚本:

DataT[['Indicator 2', 'Year']] = DataT['Indicator_Name'].apply(String_Year_Pick_V2, axis=1)

Error:
TypeError: String_Year_Pick_V2() got an unexpected keyword argument 'axis'

DataT[['Indicator 2', 'Year']] = DataT['Indicator_Name'].apply(String_Year_Pick_V2)
Error: ValueError: shape mismatch: value array of shape (252,) could not be broadcast to indexing result of shape (2,252

脚本:DataT['Indicator_Name'].apply(String_Year_Pick_V2) - 给出结果

DataT[['Indicator 2', 'Year']] = DataT.apply(lambda Row: String_Year_Pick_V2(Row['Indicator_Name']), axis=1)
Error: ValueError: shape mismatch: value array of shape (252,) could not be broadcast to indexing result of shape (2,252)

【问题讨论】:

    标签: python python-3.x pandas dataframe apply


    【解决方案1】:

    您可以在函数的输出中创建Series

    def String_Year_Pick_V2(x):
        #your code
        year = x + 2000
        ind = x + 10
        return pd.Series([ind, year])
    
    DataT = pd.DataFrame({'Indicator_Name':[1,2,3]})
    
    DataT[['Indicator 2', 'Year']] = DataT['Indicator_Name'].apply(String_Year_Pick_V2)
    print (DataT)
       Indicator_Name  Indicator 2  Year
    0               1           11  2001
    1               2           12  2002
    2               3           13  2003
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2021-06-06
      • 2018-04-02
      相关资源
      最近更新 更多