【问题标题】:Modifying pandas dataframe through function in python通过python中的函数修改pandas数据框
【发布时间】:2017-05-11 22:06:58
【问题描述】:

我尝试通过函数修改数据框并返回修改后的数据框。不知何故,它没有反映出来。在下面的代码中,我将数据框“ding”传递给函数“test”并创建一个新列“C”并返回修改后的数据框。我希望 test_ding df 有 3 列,但只能看到两列。非常感谢任何帮助。

s1 = pd.Series([1,3,5,6,8,10,1,1,1,1,1,1])
s2 = pd.Series([4,5,6,8,10,1,7,1,6,5,4,3])

ding=pd.DataFrame({'A':s1,'B':s2})

def test(ding):
    ding.C=ding.A+ding.B
    return ding

test_ding=test(ding)

【问题讨论】:

    标签: python python-2.7 function pandas dataframe


    【解决方案1】:

    ding.C 不存在,不能像属性一样访问。 您需要将行更改为

    ding['C']=ding.A+ding.B
    

    您可以创建一个类似ding['A'] = blah 的列,然后它会变成DataFrame 的一个属性。但你不能反过来。

    【讨论】:

      【解决方案2】:

      让我们试试这个:

      s1 = pd.Series([1,3,5,6,8,10,1,1,1,1,1,1])
      s2 = pd.Series([4,5,6,8,10,1,7,1,6,5,4,3])
      
      ding=pd.DataFrame({'A':s1,'B':s2})
      
      def test(ding):
          ding = ding.assign(C=ding.A+ding.B)
          return ding
      
      test_ding=test(ding)
      
      print(test_ding)
      

      输出:

           A   B   C
      0    1   4   5
      1    3   5   8
      2    5   6  11
      3    6   8  14
      4    8  10  18
      5   10   1  11
      6    1   7   8
      7    1   1   2
      8    1   6   7
      9    1   5   6
      10   1   4   5
      11   1   3   4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-24
        • 1970-01-01
        • 2018-03-27
        • 2021-09-04
        • 2012-08-31
        • 1970-01-01
        • 2019-04-19
        • 1970-01-01
        相关资源
        最近更新 更多