【问题标题】:python: write a dictionary into a pandas.DataFrame rowpython:将字典写入 pandas.DataFrame 行
【发布时间】:2020-10-21 13:15:36
【问题描述】:

我正在寻找一种将字典写入 pandas DataFrame 行的单行解决方案。 反过来,使用df.loc[2, :].to_dict(dct) 之类的表达式非常直观。

插图

我正在寻找一个镜头表达式来替换以下代码中的for key in dct.keys()-loop:

>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame(np.arange(12).reshape(3,4), columns=list('abcd'))
>>> dct = {'a': 77, 'c':-1}
>>> 
>>> df
   a  b   c   d
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
>>> dct
{'a': 77, 'c': -1}
>>> 
>>> for key in dct.keys():
...     df.loc[1, key] = dct[key]
... 
>>> 
>>> df
    a  b   c   d
0   0  1   2   3
1  77  5  -1   7
2   8  9  10  11

【问题讨论】:

    标签: python pandas dataframe dictionary


    【解决方案1】:

    你可以使用:

    df.loc[1, dct.keys()] = dct.values()
    

    结果:

    print(df)
        a  b   c   d
    0   0  1   2   3
    1  77  5  -1   7
    2   8  9  10  11
    

    【讨论】:

    • 漂亮...这正是我想要的
    【解决方案2】:

    DataFrame.update 的一个想法:

    df.update(pd.DataFrame(dct, index=[1]))
    
    print (df)
          a  b     c   d
    0   0.0  1   2.0   3
    1  77.0  5  -1.0   7
    2   8.0  9  10.0  11
    

    【讨论】:

    • 有同样的想法!
    【解决方案3】:

    如果您的列 dtype 是对象

    如果df.dtypeobject,则接受的答案失败。 您需要额外的演员表才能在 df.loc[1, dct.keys()] = dct.values() 分配的右侧列出。

    df.update(pd.DataFrame(dct, index=[1])) 适用于这种情况。

    >>> import pandas as pd
    >>> df = pd.DataFrame([['A', 'B', 'C'], ['D', 'E', 'F']], columns=list('abc'))
    >>> df.dtypes
    a    object
    b    object
    c    object
    dtype: object
    >>> df
       a  b  c
    0  A  B  C
    1  D  E  F
    >>> dct = {'a': 'x', 'c': 'y'}
    >>> df.loc[1, dct.keys()] = dct.values()
    >>> df
            a  b       c
    0       A  B       C
    1  (x, y)  E  (x, y)
    >>> df.loc[1, dct.keys()] = list(dct.values())
    >>> df
       a  b  c
    0  A  B  C
    1  x  E  y
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2017-09-26
      • 1970-01-01
      • 2012-11-04
      • 2018-08-08
      • 2018-06-17
      • 2020-08-26
      相关资源
      最近更新 更多