如何迭代具有非顺序索引标签的Pandas DataFrame(逐行)?

时间:2017-12-15 21:54:58

标签: python excel python-3.x pandas

我正在尝试迭代具有非顺序索引标签的Pandas DataFrame(逐行)。换句话说,一个Dataframe的索引标签如下所示:df。没有行/索引标签 for col in list(df): #All columns for row in df[1].iterrows(): ##All rows, except first if pd.isnull(df.loc[row[0],'Album_Name']): ##If this cell is empty all in the same row too. continue elif pd.isnull(df.loc[row[0], col]) and pd.isnull(df.loc[row[0]+1, col]): ##If a cell and next one are empty, take previous value. df.loc[row[0], col] = df.loc[row[0]-1, col] 。我想迭代DataFrame来根据条件更新/编辑每行中的某些值,因为我正在阅读Excel工作表(已合并单元格)到DataFrames中。

我尝试了以下代码(@ Manuel's answer)来遍历KeyError: the label [10] is not in the [index]的每一行,并在条件适用的情况下编辑每一行。

{{1}}

但是,由于DataFrame具有非顺序索引标签,因此出现以下错误消息:{{1}}。 如何使用非连续索引标签迭代和编辑DataFrame(逐行)?

供参考,这是我的Excel工作表和DataFrame的样子:

Side by side capture

1 个答案:

答案 0 :(得分:0)

是的,只需将第二个循环更改为:

for row in df:

然后引用带有" row"的行,而不是名称。

 for col in df: #All columns 
       for row in df: ##All rows, except first   
           if row==1:
                continue #this skips to next loop iteration
           if pd.isnull(df.loc[row[0],'Album_Name']): ##If this cell is empty all in the same row too.
               continue  
           elif pd.isnull(df.loc[row[0], col]) and pd.isnull(df.loc[row[0]+1, col]):  ##If a cell and next one are empty, take previous value.
               df.loc[row[0], col] = df.loc[row[0]-1, col]