Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas:np.where覆盖值_Python_Python 2.7_Pandas - Fatal编程技术网

Python Pandas:np.where覆盖值

Python Pandas:np.where覆盖值,python,python-2.7,pandas,Python,Python 2.7,Pandas,目前,我多次遍历excel文件的行,并在行满足某些条件时,将“XYZ”写入新列 我目前的代码是: df["new_column"] = np.where(fn == True, "XYZ", "") 我面临的问题是,当fn==True条件不满足时,我不想做任何事情,而是继续检查excel文件的下一行。我注意到每次迭代时,空字符串都会替换文件中已经标记的“XYZ”。有没有办法防止这种情况发生?我可以做些什么来代替空字符串(“”)来防止覆盖吗 编辑: 我的dataframe是一个巨大的财务Exc

目前,我多次遍历excel文件的行,并在行满足某些条件时,将“XYZ”写入新列

我目前的代码是:

 df["new_column"] = np.where(fn == True, "XYZ", "")
我面临的问题是,当fn==True条件不满足时,我不想做任何事情,而是继续检查excel文件的下一行。我注意到每次迭代时,空字符串都会替换文件中已经标记的“XYZ”。有没有办法防止这种情况发生?我可以做些什么来代替空字符串(“”)来防止覆盖吗

编辑:

我的dataframe是一个巨大的财务Excel文件,包含多个列和行。这个数据集有诸如数量、收入、销售等列。基本上,我有一个包含大约50个条件的列表。对于每个条件,我遍历Excel中的所有行,对于与该条件匹配的行,我希望在标记该行的df[“new_column”]中放置一个“XYZ”。df[“new_column”]是原始数据帧中添加的列。然后,我进入下一个条件,直到第50个条件

我认为问题在于,当我继续检查列表中的其他条件时,我编写代码的方式用空字符串替换了以前存在的“XYZ”。基本上,我想找到一种方法来锁定“XYZ”,这样它就不会被覆盖


fn是一个帮助函数,它根据条件是否等于数据帧中的一行返回布尔值。当我迭代时,如果条件匹配一行,则该函数返回True并将df[“new_column”]标记为“XYZ”。helper函数接受多个参数,以检查当前条件是否与数据框中的任何行匹配。我希望这个解释有帮助

IIUC您想使用
.loc[]

df.loc[fn, "new_column"] = 'XYZ'

您可以尝试使用lambda

首先,创建函数:

def checkIfTrue(FN, new):
    if new == "":
        pass
    if FN:
        return "XYZ"
然后将其应用于新列,如下所示:

df['new_column'] = df.apply(lambda row: checkIfTrue(row["fn"], row["new_column"]), axis=1)

我知道这个名字的意思不是这样的,但是数据框中已经存在
df[“new_column”]
了吗?没有!这就引出了一个问题,它覆盖了什么?它覆盖了excel文件中已经写入的以前的“XYZ”。XYZ在哪一列?这给了我“无法使用单个bool索引到setitem”@BrianKim,你能提供一个小样本数据集(
df
fn
)你想要的数据集呢?我编辑了我以前的回复。我希望它现在更有帮助@BrianKim,不,这并没有让事情变得更清楚。请阅读并相应编辑您的帖子。