Python 向空数据框添加新列和值:ValueError

Python 向空数据框添加新列和值:ValueError,python,pandas,dataframe,Python,Pandas,Dataframe,作为我的简化示例脚本的一部分,我将在我的数据框架中添加一个新的列“generation”,其值为“millenial”。当数据帧为空时,使用df.loc的第一个选项抛出ValueError,但第二种方法按预期正确创建列。有人能解释一下为什么第二种方法成功地在空数据帧上创建了新列,但第一种方法抛出了ValueError 我也知道我可以在创建新列之前检查数据框是否为空,但这个问题主要是出于好奇 import pandas as pd df = pd.DataFrame(columns=[&quo

作为我的简化示例脚本的一部分,我将在我的数据框架中添加一个新的列“generation”,其值为“millenial”。当数据帧为空时,使用
df.loc
的第一个选项抛出ValueError,但第二种方法按预期正确创建列。有人能解释一下为什么第二种方法成功地在空数据帧上创建了新列,但第一种方法抛出了ValueError

我也知道我可以在创建新列之前检查数据框是否为空,但这个问题主要是出于好奇

import pandas as pd 

df = pd.DataFrame(columns=["name", "age"], data=None)
这将导致“ValueError:无法设置没有定义索引和标量的帧”

这将成功地在空数据帧上创建“generation”列

df["generation"] = "millenial"

在第一种方法中,您试图替换现有数据帧的值,该数据帧具有不存在的列“generation”,因此会抛出错误。在第二种方法中,您要求pandas创建一个新的列“generation”,然后为其赋值,这很好。我意识到
df=df.assign(generation=“millenial”)
也可以工作。有什么理由使用这些特殊的方法吗?或者是“最佳实践”方法之一?您是否尝试过
。我想是在[]
?@Let'stry。at[]主要用于访问特定值(行、列索引)。在我的例子中,如果dataframe为空,则所需的行为只是创建新列,但dataframe仍然不包含行。在第一种方法中,您尝试替换现有dataframe的值,该现有dataframe的列“generation”不存在,因此引发错误。在第二种方法中,您要求pandas创建一个新的列“generation”,然后为其赋值,这很好。我意识到
df=df.assign(generation=“millenial”)
也可以工作。有什么理由使用这些特殊的方法吗?或者是“最佳实践”方法之一?您是否尝试过
。我想是在[]
?@Let'stry。at[]主要用于访问特定值(行、列索引)。在我的例子中,如果dataframe为空,则所需的行为只是创建新列,但dataframe仍然不包含行。
df["generation"] = "millenial"