如何使用Python获取行为空的Excel的列名
在Excel工作表中的多个列中,需要从Excel工作表中查找每行的特定列的名称,并在不同的列中输入列的名称。如果列中没有任何一个具有空白值,则会将其写入无间隙 输入数据:如何使用Python获取行为空的Excel的列名,python,pandas,dataframe,Python,Pandas,Dataframe,在Excel工作表中的多个列中,需要从Excel工作表中查找每行的特定列的名称,并在不同的列中输入列的名称。如果列中没有任何一个具有空白值,则会将其写入无间隙 输入数据: col1 col2 col3 col4 col5 col6 Result AB BC CD EF GH IJ AN AP AR AS AT BP BQ BR
col1 col2 col3 col4 col5 col6 Result
AB BC CD EF GH IJ
AN AP AR AS AT
BP BQ BR BT
BZ BY BX BW
CP CQ CR CS
预期产出:
Result
No Gaps
col3 is not available
col2, col5 not available
col3, col4 not available
col5, col6 not available
到目前为止我已经尝试过的脚本:
if (df['col1'] || df['col2'] || df['col3'] || df['col4'] || df['col5'] || df['col6']).empty != True:
df['Result']= "No Gaps"
else:
df['Result']=
我不知道如何遍历该列的每一行,并获得在[[结果] ]列中所分隔的空白行的列名,
< P>与<强> < /强>和<强> <强> >和某些字符串添加,您可以实现此项。 注意:如果df中已经存在Result
列,请先删除它
如果空格是空白字符串,则可以执行以下操作:
u = df.eq('').dot(df.columns+",").str.rstrip(",")
out = df.assign(Result=np.where(u.ne(''),u.add(" not available"),"No Gaps"))
如果它们是nan
:
u = df.isna().dot(df.columns+",").str.rstrip(",")
out = df.assign(Result=np.where(u.ne(''),u.add(" not available"),"No Gaps"))
通过和以及一些字符串添加,您可以实现这一点 注意:如果df中已经存在
Result
列,请先删除它
如果空格是空白字符串,则可以执行以下操作:
u = df.eq('').dot(df.columns+",").str.rstrip(",")
out = df.assign(Result=np.where(u.ne(''),u.add(" not available"),"No Gaps"))
如果它们是nan
:
u = df.isna().dot(df.columns+",").str.rstrip(",")
out = df.assign(Result=np.where(u.ne(''),u.add(" not available"),"No Gaps"))
在这种情况下,“空白”是什么?既然pandas将空值显示为
NaN
,或者您的意思是像'
@Erfan这样的空字符串-Blank仅为NaN,那么在这种情况下,“Blank”是什么?由于pandas将空值显示为NaN
,或者您的意思是像'
@Erfan-Blank这样的空字符串,因此@anky-u=df.isna().dot(df.columns+“,”).str.rstrip(“,”)将搜索所有列中的空值,如果我们必须在总共10列中只检查5列,那么需要做什么呢?在变量a中,您占用了5列,但在变量u中使用它时,您只保留了3列,我不明白。@Manz这是一个打字错误,很抱歉使用a=df[['col1'、'col2'、'col3'、'col4'、'col5']]
然后u=a.isna().dot(a.columns+“,”).str.rstrip(“,”)
基本上使用与a
相同的代码-子集而不是df
-完整的数据帧使用u=a.isna().dot(a.columns+”,”).str.rstrip(“,”)时,在每种情况下都会给出“True”输出。@Manz是您的空格np.nan
还是“”空白字符串?如果值为np.nan
,我可以测试并查看它是否适合我。你能仔细检查一下吗?@anky-u=df.isna().dot(df.columns+“,”).str.rstrip(“,”)它会在所有列中搜索空值,如果我们必须在总共10列中只检查5列,那么需要做什么呢?在变量a中,你占用了5列,但在变量u中使用它时,你只保留了3列,不明白。@Manz那是一个输入错误,很抱歉使用a=df[['col1','col2','col3','col4','col5']
,然后使用u=a.isna().dot(a.columns+“,”).str.rstrip(“,”)
基本上使用与a
相同的代码子集而不是df
-完整的数据框架使用u=a.isna().dot(a.columns+“,”,.str.rstrip(“,”,”),它在每种情况下都给出“True”输出。@Manz是您的空格np.nan
还是“”空白字符串?如果值为np.nan
,我可以测试并查看它是否适合我。你能再检查一下吗?