如果行中包含字符串,则Python将添加到表中

2024-09-28 05:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我的电子表格如下所示:

enter image description here

我的目标是打印出哪个“hmi”控制哪个“az”,在相应的列中用“x”表示。基于上述电子表格的示例:

  • HMI1控制AZ1
  • HMI2控制AZ2
  • HMI3控制AZ3
  • HMI4控制AZ3

等等

我可以处理并排序到输出excel表的理想输出是(其中“X”是相应的数字):

HMIX | AZX

我用pd.read_excel导入了电子表格,我的想法是使用以下代码对其进行格式化,但我认为我很接近,但走错了方向:

    for index, row in dfConfig.iterrows():
        if row["az1"] != "NaN":
            print(row["hmi_number"])

Tags: 示例目标排序excelazrow电子表格hmi
3条回答

如果您正在查找检查某个内容是否为字符串的内容,请尝试以下操作

>>> currentColumn = "x"
>>> isinstance(currentColumn, str)
True
>>> isinstance(currentColumn, int)
False
>>> 

鉴于df

df = pd.DataFrame({'hmi_number':np.arange(1,10),
                  'az1':['x']+[np.nan]*8,
                  'az2':[np.nan]+['x']+[np.nan]*7,
                  'az3':[np.nan]*2+['x']*2+[np.nan]*5,
                  'az4':[np.nan]*4+['x']*2+[np.nan]*3,
                  'az5':[np.nan]*6+['x']*2+[np.nan],
                  'az6':[np.nan]*8+['x']})

试试这个:

for hmi, az in (df.set_index('hmi_number')=='x').dot(df.columns[1:]).iteritems():
    print(f'HMI{hmi} controls {az}')

输出:

HMI1 controls az1
HMI2 controls az2
HMI3 controls az3
HMI4 controls az3
HMI5 controls az4
HMI6 controls az4
HMI7 controls az5
HMI8 controls az5
HMI9 controls az6

首先迭代行,感谢列,如果找到x,则打印行和列

for i, row in dfConfig.iterrows():
    for col in dfConfig:
        if row[col] == 'x':
            print(f'HMI{row["hmi_number"]} controls {col}')

相关问题 更多 >

    热门问题