【问题标题】:How can I change values in a data frame into a list of values?如何将数据框中的值更改为值列表?
【发布时间】:2020-10-18 05:13:46
【问题描述】:

我正在使用 Plotly 创建饼图,我需要获取饼图的值。因此,例如,我有一个如下所示的数据框:

df = pd.DataFrame(np.array([[1, 2, 3]]),
                   columns=['a', 'b', 'c'])

它会给出类似的东西:

  a b c
0 1 2 3

我正在尝试从 b 到 c 获取第 0 行的值,它应该是:

[2, 3]

我怎样才能做到这一点?到目前为止我试过了:

df[['b', 'c']].values.tolist()

它给出了:

[[2, 3]]

以上不适用于 Plotly 值...

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    找到索引标签,提取值并转换为列表。

    像这样:df.loc[0, ['b', 'c']].tolist()

    【讨论】:

    • df.values 不建议使用,文档中也提到过。而是使用df.iloc[0].to_numpy()
    • 执行此操作时遇到一个关键错误KeyError: 0..
    【解决方案2】:

    df.iloc[0][['b', 'c']].to_list() 或者您可以在所选系列上调用列表 list(df.iloc[0][['b', 'c']])

    【讨论】:

    • 您可以阅读有关"chained assignment" here 的更多信息并查看此related question too
    • @Ch3steR OP 声明它是第 0 行,因此它是 ilocto_list 只是 tolist 的别名,而 df.iloc[0]['b', 'c'] 应该是 df.iloc[0][['b', 'c']],你介意解释一下为什么不是推荐?
    • 在上面的评论中提到了链接,我从来没有提到任何关于to_list/tolist 我知道这是一个别名。是的,我知道它具有误导性(已删除)。 ;)
    • 正确的做法是df.iloc[0, ['b', 'c']]而不是df.iloc[0]['b', 'c'](不推荐)。
    • 您共享的链接用于将新值分配到数据框中,在链接中显示链接分配有时无法正常工作,因为链的一部分可以返回副本,因此不会修改原始 df,但 OP 在这里提出的问题是只访问未分配的值。
    猜你喜欢
    • 2022-01-05
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 2022-12-05
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多