Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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跳过空单元格_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python跳过空单元格

Python跳过空单元格,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我希望能够搜索我的数据框并跳过空白单元格。然而,当我在DF中阅读时,它将空格读为“nan” DF1 我希望能够过滤地址1、街道和城镇。如果这些列中有文本,我想在开始处添加“|”,但如果列中没有文本,则跳过该单元格,不添加“|” 期望结果 Name Address1 Street Town Postcode Will |London Phil 19 |Long Road 添加“|”的简单方法 添加“|”的简单方法 像这样的 imp

我希望能够搜索我的数据框并跳过空白单元格。然而,当我在DF中阅读时,它将空格读为“nan”

DF1

我希望能够过滤地址1、街道和城镇。如果这些列中有文本,我想在开始处添加“|”,但如果列中没有文本,则跳过该单元格,不添加“|”

期望结果

Name Address1 Street      Town   Postcode
Will                     |London 
Phil 19      |Long Road
添加“|”的简单方法

添加“|”的简单方法

像这样的

import numpy as np
for i in ['Address1','Street','Town']:
    df[i] = np.where(df[i].notnull(),'|' + df[i].astype(str),'')
其中打印:

print(df)

   Name Address1       Street     Town  Postcode
0  Will                        |London       nan
1  Phil    |19.0  |Long Road                nan
像这样的

import numpy as np
for i in ['Address1','Street','Town']:
    df[i] = np.where(df[i].notnull(),'|' + df[i].astype(str),'')
其中打印:

print(df)

   Name Address1       Street     Town  Postcode
0  Will                        |London       nan
1  Phil    |19.0  |Long Road                nan

因此,我可以推荐的是研究一下这个问题。根据文档,您可以使用带有附加参数的
pd.read_csv()
函数来决定如何处理
NaN


import pandas as pd

pd.read_csv("sample.csv", sep=";", keep_default_na=False)

作为pd进口熊猫
pd.read_csv(“sample.csv”,sep=“;”,keep_default_na=False)
因此,根据文档,这可能是一个示例解决方案。:)

如果keep_default_na为False,并且未指定na_值,则不会将任何字符串解析为NaN


因此,我可以推荐的是研究一下这个问题。根据文档,您可以使用带有附加参数的
pd.read_csv()
函数来决定如何处理
NaN


import pandas as pd

pd.read_csv("sample.csv", sep=";", keep_default_na=False)

作为pd进口熊猫
pd.read_csv(“sample.csv”,sep=“;”,keep_default_na=False)
因此,根据文档,这可能是一个示例解决方案。:)

如果keep_default_na为False,并且未指定na_值,则不会将任何字符串解析为NaN


更改@sophods的解决方案以删除NaN值


import pandas as pd

pd.read_csv("sample.csv", sep=";", keep_default_na=False)
import numpy as np
for i in ['Address1','Street','Town']:
    df[i] = np.where(df[i].notnull(),'|' + df[i].astype(str),'') 

更改@sophods的解决方案以删除NaN值


import pandas as pd

pd.read_csv("sample.csv", sep=";", keep_default_na=False)
import numpy as np
for i in ['Address1','Street','Town']:
    df[i] = np.where(df[i].notnull(),'|' + df[i].astype(str),'') 

您的意思是,当一行中的两个单元格有一个值时,您希望将
|

代码如下:

for r, row in df.iterrows():
    for i in range(len(row)):
        if i>1 and row[i]!=None and row[i-1]!=None:
            df.at[r,col[i]] = '|' + str(row[i])
结果如下:

Name    Address1     Street     Town    Postcode
Will     None        None       London   None
Phil    19.0      |Long Road    None    None

我构建我的数据框架时没有。用您的
nan更改
None

您的意思是当一行中的两个单元格都有一个值时,您想把
|
放进去吗

代码如下:

for r, row in df.iterrows():
    for i in range(len(row)):
        if i>1 and row[i]!=None and row[i-1]!=None:
            df.at[r,col[i]] = '|' + str(row[i])
结果如下:

Name    Address1     Street     Town    Postcode
Will     None        None       London   None
Phil    19.0      |Long Road    None    None


我构建我的数据框架时没有。在每个pands数据框中用您的
nan

更改
None
必须是某个值,因此需要将
nan
替换为空字符串吗?因为if need
跳过该单元格
是不可能的。在上面的输出中,当街道为空时,没有“|”,当街道为空时,没有“|”。这不是你想要的吗?有没有其他地方我可以过滤它们,如果它包含文本,然后添加|如果没有|?
如果这些列中有文本,我想在开始时添加一个“|”
-那么为什么要从
伦敦删除
?不是很快,但应该可以工作:
df.applymap(lambda x:“|”+x如果type(x)==str else x)
在每个pands数据框中
的“单元格”
必须是某个值,所以需要将
nan
替换为空字符串吗?因为if need
跳过该单元格
是不可能的。在上面的输出中,当街道为空时,没有“|”,当街道为空时,没有“|”。这不是你想要的吗?有没有其他地方我可以过滤它们,如果它包含文本,然后添加|如果没有|?
如果这些列中有文本,我想在开始时添加一个“|”
-那么为什么要从
伦敦删除
?不是很快,但应该可以工作:
df.applymap(lambda x:“|”+x如果type(x)==str else x)
这显然是错误的。检查预期输出以获取您的评论。我是不是错过了他想要的东西?好吧,我想我不理解他的问题。写得不太清楚。同意,这就是为什么提问道歉编辑了错误的东西的原因。这很好用。非常感谢,希特显然错了。检查预期输出以获取您的评论。我是不是错过了他想要的东西?好吧,我想我不理解他的问题。写得不太清楚。同意,这就是为什么提问道歉编辑了错误的东西的原因。这很好用。谢谢你,为了更准确,我也做了很多调整。@sophods np。哪里速度很快,不是吗?一直在使用它而不是循环:DFixed mine太精确了。@sophods np。哪里速度很快,不是吗?使用它而不是循环:d我需要更改列的列名吗?这里的列名列表
col=['name','Address1','Street','Town','Postcode']
@Will。我需要更改列的列名吗?这里的列名列表
col=['name','Address1','Street','Town Postcode']
@Will。