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 - Fatal编程技术网

Python 如果单元格中存在值,则获取列名

Python 如果单元格中存在值,则获取列名,python,python-3.x,pandas,Python,Python 3.x,Pandas,我得到了以下excel表格: 遍历每一行,只要出现“x”值,我就需要提取列名。我怎么能这么做?没有基于单元格的“获取列名”选项 这是我的密码: df = pd.read_excel("/Users/farmaceut/Sites/journals_database/journals.xlsx", header=[2, 3]) df = df.replace(np.nan, '', regex=True) for col in df.columns[8:]: ...Domai

我得到了以下excel表格:

遍历每一行,只要出现“x”值,我就需要提取列名。我怎么能这么做?没有基于单元格的“获取列名”选项

这是我的密码:

df = pd.read_excel("/Users/farmaceut/Sites/journals_database/journals.xlsx", header=[2, 3])
df = df.replace(np.nan, '', regex=True)
for col in df.columns[8:]:
...Domain.objects.update_or_create(domain_name=col[0])
for index, col in df.iterrows():
......journal = Journal.objects.update_or_create(title=col[1], abbreviation=col[4], impact_factor=0,ministerial_points=col[7])
for cell in col[8:]:
...if cell == 'x':
......????

请查看以下代码以查找索引和字符a所在的列。用您想要查找的字符更改
a
,您将获得索引以及字符所在的列

df=pd.DataFrame({"A":['fdsf','dfsa'],"B":[1,2]})
indices=[]
columns=[]
for column in df.columns:
    values=list(df[df[column].astype(str).str.contains('a')].index)
    if(len(values)>0):
        indices.append(values)
        columns.append(column)
在这种情况下,输出将是

columns=['A'] # Column where 'a' is found
indices=[[1]] # Index where 'a' is found

你期望什么样的产出?请提供文本而非图片的示例输入。我无法有意义地复制图片。请提供一个MCVE。您几乎有足够的信息来回答一个适当的问题,但您需要做更多的工作。我只需要获得出现“x”的列的标题,但对于每一行,您需要分别发布一个MCVE:。我不知道您想看到什么,从您的问题判断,我也不相信您会这样做。我猜查询是根据提供的详细信息获取特定值(字符串或数字)匹配的列名。这不起作用。我需要在找到“x”的任何位置获取列名,并分别获取每行的列名。这不能立即完成,因为我无法像对ItError那样设置模型(日志)值。找到“x”的行将位于“索引”(列表列表)中,其中每个单独的列表对应于存在“x”的行,而相应的列则存在于“列”列表中。在本例中,这意味着在第1行的“A”列中存在字符“A”。好的,但我应该在哪里实现这段代码?在索引的
之后,是df.iterrows()中的列。
?或者在列[8:]中的单元格的
之后:
?根据您的代码,您似乎在末尾找到了“x”(在iterrows()之后),因此此代码位于末尾