【问题标题】:Assigning value to pandas column not working为熊猫列赋值不起作用
【发布时间】:2022-07-20 15:42:29
【问题描述】:

我正在检查数据框是否为空,如果是则分配一个值。数据框有列“NAME”和“ROLE”

df = pd.DataFrame(columns = ['NAME', 'ROLE'])

if df.empty:
    df["NAME"] = "Jake"

将“Jake”分配给“NAME”之后。数据框仍然是空的,如下所示:

NAME ROLE

但我希望数据框看起来像这样:

NAME ROLE
Jake

【问题讨论】:

  • 你能把它扩展成一个简短的工作脚本来显示问题吗?
  • 你确定df.empty是真的吗?
  • @tdelaney 我已经做到了
  • 由于数据框为空,因此您将 0 个“Jake”分配给空列。我不确定您的 |NAME|ROLE| |:---|:---:| | | | 是什么……这就是示例很重要的原因! ...但如果 df 不为空,则 if 不会运行并且不会分配任何内容。
  • 生成的数据框应该有多少行?你可以df["NAME"] = ["Jake"] 做一行。

标签: python pandas


【解决方案1】:

将标量分配给 pandas 数据框会将该列中的每个值设置为标量。由于您的行数为零,df["NAME"] = "Jake" 不会分配任何内容。但是,如果您分配一个列表,则会为该列表扩展数据框。在数据框中获取单行

df["NAME"] = ["Jake"]

您可以通过向正在分配的列表添加其他值来创建更多行。

【讨论】:

    【解决方案2】:

    正如人们在 cmets 中所说,您的空数据框中没有行可将值“Jake”分配给“Name”列。在第一个示例中显示:

    df = pd.DataFrame(columns=['Name','Role'])
    df['Name'] = 'Jake'
    print(df)
    

    我猜你想添加一行:

    df = pd.DataFrame(columns=['Name','Role'])
    df = df.append({'Name':'Jake','Role':None},ignore_index=True)
    print(df)
    

    【讨论】:

      【解决方案3】:

      如果你想改变不止一个行的值,你可以在 Pandas 模块中使用 .loc 方法:

      change_index = data_["sample_column"].sample(150).index # 值会改变的行的索引

      data_["sample_column"].loc[sample_index] = 1 # 指定索引和指定列的值被更改或赋值为1

      注意:如果你写为 data_.loc[sample_index]["sample_column"]。 = 1 它不工作!因为 ["sample_column"] 条件写的和之前的 .loc 方法一样。

      【讨论】:

        猜你喜欢
        • 2021-10-28
        • 2013-07-29
        • 2017-07-29
        • 1970-01-01
        • 2015-12-24
        • 2019-04-21
        • 2017-11-23
        • 1970-01-01
        相关资源
        最近更新 更多