Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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-根据不同列中的空白单元格将文本输入到列中_Python_Pandas - Fatal编程技术网

Python Pandas-根据不同列中的空白单元格将文本输入到列中

Python Pandas-根据不同列中的空白单元格将文本输入到列中,python,pandas,Python,Pandas,这是我的密码: finalCSV = pd.read_csv('pathName') #Open new CSV #create col for isMAP based on true or false finalCSV['isMap'] = np.where(finalCSV['MAP'] == finalCSV['productPrice'], 'True', 'False') finalCSV = finalCSV.sort_values(by = ['isMap'

这是我的密码:

    finalCSV = pd.read_csv('pathName') #Open new CSV
#create col for isMAP based on true or false
    finalCSV['isMap'] = np.where(finalCSV['MAP'] == finalCSV['productPrice'], 'True', 'False')
    finalCSV = finalCSV.sort_values(by = ['isMap'], ascending = True,) #Make it so the falses come out first

if finalCSV['productSKU'].isna().all():
     finalCSV['isMap'].str.replace('False' ,'N/A')
finalCSV.to_csv('pathName', index = False) #Close and overwrite CSV
这是我正在处理的csv文件的图像

我要做的是,如果“productSKU”中的相邻单元格为空,则在“isMap”列上输入文本N/A。但是,当我运行代码段时,excel文件将保留“FALSE”而不是“N/A”

编辑:这是我的CSV的链接

一些额外的澄清

给出了前3列,productName、productOMS、productPrice、productSKU和productURL都是我在webscraper中获得的项目。isMap是我在这个程序中创建的一个列,然后用结果动态填充它

所以

现在,如果我的webscraper无法获取产品SKU和/或productName,则意味着该产品在网站上不存在

if productSKU is NULL, isMap would return not available
这是数据帧头:

{'SKU': {0: 'FRC5131-WM-33', 275: 'KECOM-36', 276: 'DW-BS-24', 277: 'BS655N-48', 278: '8654WM-36'}, 

'MAP': {0: nan, 275: 779.95, 276: nan, 277: 1299.95, 278: 1295.95}, 


'productSKU': {0: nan, 275: nan, 276: nan, 277: nan, 278: nan}, 


'productPrice': {0: nan, 275: nan, 276: nan, 277: nan, 278: nan}, 


'productName': {0: nan, 275: nan, 276: nan, 277: nan, 278: nan}, 

'HOME DEPOT (OMSID)': {0: 312962522, 275: 206922074, 276: 308581002, 277: 312332575, 278: 309618527}, 

'productURL': {0: 'https://www.homedepot.com/p/312962522', 275: 'https://www.homedepot.com/p/206922074', 276: 'https://www.homedepot.com/p/308581002', 277: 'https://www.homedepot.com/p/312332575', 278: 'https://www.homedepot.com/p/309618527'}, 

'isMap': {0: 'False', 275: 'False', 276: 'False', 277: 'False', 278: 'False'}, 

'productOMS': {0: 312962522, 275: 206922074, 276: 308581002, 277: 312332575, 278: 309618527}}
编辑:

对于您发布的CSV文件,
finalCSV['productSKU'].isna().all()
False
——第7行和第9行的
productSKU
列中有值

手动删除这两个值会产生错误,因为
isMap
列被自动检测为
bool
类型

另一件令人困惑的事情是,Pandas将字符串
N/A
解释为“非数字”值。。。!请参阅
na_值
下的文档

我建议使用
N/A
以外的值作为结果值。:-)原始答案和下面的固定代码


解决办法似乎是:

finalCSV=pd.read_csv(路径名,dtype={'isMap':str})#打开新的csv
is_na_index=finalCSV['isMap'][finalCSV['productSKU'].isna()].index
finalCSV.loc[is_na_索引,'isMap']=finalCSV.loc[is_na_索引,'isMap'].替换('FALSE','notavailable'))
finalCSV.to_csv(路径名,索引=False)#关闭并覆盖csv

如果其他人也有同样的问题,这就成功了

finalCSV['isMap'] = np.where( finalCSV['productSKU'].isna(), "Not Available", finalCSV['isMap'])

我看到了一些正在发生的事情——其中之一是熊猫自动猜测每个CSV列的数据类型。请编辑您的帖子以包含CSV文件数据,好吗?另一点——也是最重要的一点——是,
.replace()
在默认情况下不进行替换。请参阅--
inplace
默认为
False
。最简单的修复方法似乎是在调用
.replace()
的行首添加
finalCSV['isMap']=
。但是请先发布CSV数据:-)谢谢没有这样做,我将发布我的CSV数据的一部分,作为对post的编辑对不起,我如何才能将文件上载到StackOverflow不要上载文件。执行dataframe.head()到_dict()并粘贴output@sammywemmy我想我明白了,我只是打印了代码(finalCSV.head().tp_dict())@GregSadetsky首先感谢您的帮助!其次,我收到的数据可以有一个MAP和productPrice。如果有,并且这些值匹配,则isMap是我创建的一个列,它将填充True。如果MAP和productPrice不匹配,则isMap将填充False。没有productSKU的项目是不存在的项目在我正在浏览的网站上,我想用“不可用”填充isMap,我会在我的帖子中进一步说明。
finalCSV['isMap'] = np.where( finalCSV['productSKU'].isna(), "Not Available", finalCSV['isMap'])