Python 是否使用if-else条件更新数据帧值?

Python 是否使用if-else条件更新数据帧值?,python,pandas,Python,Pandas,我想更新一个数据框列,其中的布尔值为True/False。JSON格式是 [ { "A":"value", "TIME":1551052800000, "C":35, "D":36, "E":34, "F":35, "G":33 }, ... ... ] 将其转换为数据帧 df=pd.DataFrame.from_dict(content) 现在我可以通过dataframe访问原始对象中的不同列,如下所示 df[“TIME”]=“2019-1

我想更新一个数据框列,其中的布尔值为True/False。JSON格式是

[
  {
   "A":"value",
   "TIME":1551052800000,
   "C":35,
   "D":36,
   "E":34,
   "F":35,
   "G":33
  },
 ...
...
]
将其转换为数据帧

df=pd.DataFrame.from_dict(content)

现在我可以通过dataframe访问原始对象中的不同列,如下所示

df[“TIME”]=“2019-12-0”

如果我这样做,它基本上会为数据帧中的所有df[“TIME”]设置。我只想更新条件匹配的特定列

If df["label"].bool() == True
   then update 5 columns in x way
Else if df["label"].bool() == False
   then update 6 columns in a different way
我运行简单的if-else条件

       if df["label"].bool() == True:
            df["A"] = df["G"]
            if df["A"] == 0 :
                print(df["A"])
            else:
                df["C"] = (df["D"]/df["E"])*100
        elif df["label"].bool() == False:
            ....

它适用于1个选择,但对于多个选择,它会返回

ValueError:序列的真值不明确。


注意:从客户端添加df[“label”]列以检查是否选择了特定行

如果我理解正确,您最好设置数据帧()的相关切片,而不是使用If/else语句设置值

比如说,

# df = a pandas.DataFrame
df.loc[:,'A'][df['label']=='value'] = 0
注意:如果
df['label']
仅包含布尔值,则无需检查其值,可以直接使用它来屏蔽数据帧:

df.loc[:,'A'][df['label']] = 0

你能详细谈谈你的问题吗?也许可以提供一个输入数据帧和预期输出的示例。更新了问题a bitdf[“label']是数据帧中的一列,一列是一个系列。一个系列包含许多项。在整个系列中确定True或False是不明确的。要获取单个(标量)项,请使用us df。在['2019-02-01',label']==True此代码非常适合更新单个列,但是如果我想更新另外两列呢?比如说
df.loc[:,'a'][df['label']==value']=df['a']=99&df['B']=900
基本上,需要使用标签值作为检查来更新数据帧中的多个列/系列值。比如说,我有6列,即a、B、C、D、E、F,根据标签,我需要更新这些列中的大多数。一种方法是多次使用“掩码”:
df.loc[:,'a'][df['label']='value']=99
df.loc[,'B'][df['label']=='value']=900
但是你可以用一种更简洁的方式来做这件事!这似乎是目前唯一的解决方案。无论如何感谢你的回答。欣赏它。你可以在列上迭代,这样你就不必多次编写它。例如,
columns=['a',B']values=[99900]表示列,zip中的值(列,值):df.loc[:,col]=值
,您可以在其中添加上述条件。