【问题标题】:Adding a simple row into a dataframe?在数据框中添加一个简单的行?
【发布时间】:2022-11-12 02:44:16
【问题描述】:

我花了几个小时试图做这么简单的事情, 我有一个数据框:

  a b c d
0 1 2 3 4
1 5 6 7 8
2 2 3 4 5
3 5 6 7 8
4 1 2 3 4

我有一本字典:

dic = {'b':6,'d':2}

我想做两件不同的事情:

  1. 只需在 df 中添加一行,dic 将 NaN 用于列 'a' 和 'c'
  2. 使用此字典修改带有条件a=3 的行。为此,我尝试了:

    df.loc[df['date'] == date, dic.keys()] = dic.values()

    这提供了奇怪的结果,例如 () 中的值

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    对于默认 RangeIndex 的新行,使用 DataFrame.loc

    dic = {'b':6,'d':2}
    df.loc[len(df)] = dic
    

    对于使用您的解决方案按条件修改列对我来说效果很好,对于较旧的 pandas/python 版本将 keysvalues 转换为列表:

    dic = {'b':60,'d':20}
    
    df.loc[df['a'] == 1, list(dic.keys())] = list(dic.values())
    print (df)
         a   b    c   d
    0  1.0  60  3.0  20
    1  5.0   6  7.0   8
    2  2.0   3  4.0   5
    3  5.0   6  7.0   8
    4  1.0  60  3.0  20
    5  NaN   6  NaN   2
    

    【讨论】:

    • 再次感谢!第二个在其中添加带有 () 的值..
    • @gotiredofcoding - 第二次为我工作是正确的,你能显示你错误的输出吗?
    • 谢谢,我会再次检查并发布,无论如何都会接受!
    • 好吧原来我们需要做 list(dict.keys()) 和相同的值...
    • @gotiredofcoding - 感谢您的评论,添加到答案中。
    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 2018-03-25
    • 2017-01-14
    • 1970-01-01
    • 2011-05-26
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多