我想更新一个布尔值是True / False的pandas dataframe列。 JSON格式为
[
{
"A":"value",
"TIME":1551052800000,
"C":35,
"D":36,
"E":34,
"F":35,
"G":33
},
...
...
]
将其转换为数据框
df = pd.DataFrame.from_dict(content)
我现在可以通过数据框以
访问原始对象中的不同列 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 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: The truth value of a Series is ambiguous.
注意:客户端添加了df [“ label”]列,以检查是否选择了特定行
答案 0 :(得分:1)
如果我的理解正确,那么与使用if / else语句设置值相比,最好设置数据帧的相关切片(indexing)。
例如
# df = a pandas.DataFrame
df.loc[:,'A'][df['label']=='value'] = 0
注意::如果df['label']
仅包含布尔值,则无需检查其值,而可以直接使用它来掩盖数据框:
df.loc[:,'A'][df['label']] = 0