Python 循环通过占位符创建一个系列

Python 循环通过占位符创建一个系列,python,pandas,Python,Pandas,我想根据if条件自动更改pandas列缺少值的名称,最好使用“string\u name\u number”。数字应从一开始,以最后缺少的值结束。我决定如下设置循环,以从字符串中选择数据 但是,缺少列的结果(df2)保持不变。详情如下:答辩人i,jakson,答辩人i,答辩人i,jane,答辩人i,mary 我希望看到以下结果(df2);-被告1、jakson、被告2、被告3、jane、被告4、mary 请帮忙 import pandas as pd df = pd.read_csv('2

我想根据if条件自动更改pandas列缺少值的名称,最好使用“string\u name\u number”。数字应从一开始,以最后缺少的值结束。我决定如下设置循环,以从字符串中选择数据

但是,缺少列的结果(df2)保持不变。详情如下:答辩人i,jakson,答辩人i,答辩人i,jane,答辩人i,mary

我希望看到以下结果(df2);-被告1、jakson、被告2、被告3、jane、被告4、mary

请帮忙

import pandas as pd  

df = pd.read_csv('232 responses.csv', sep=',',header=0, parse_dates=True, 
                 index_col='Timestamp')

missing_rows_list = list(range(0, len (df)))

for i in missing_rows_list:
    i = 1
    df2 = [df['Name (optional)']\
           .replace(np.nan, 'respondent {d[i]}'\
           .format(d=missing_rows_list)) if pd.isnull(df['Name (optional)']) \
            else df['Name (optional)'] == word in df['Name (optional)']]
    i += 1

我认为这应该是一个更方便的方法:

df=pd.DataFrame({"a":["test1","test2","test3","test4",np.NAN],"b":["test5",np.NAN,"test7",np.NAN,"test9"]})

#Create the respondent + inex number format --> you can also save this in an extra df column if you like
a=["respondent"]*len(df.index)
b=list(df.index)
c=["{0}{1}".format(a_,b_)for a_,b_ in list(zip(a,b))]

#Replace the missing values
for i in df.columns:
    mask = df[i].isnull()
    df[i].mask(mask,c, inplace=True)

print(df)



           a          b
0      test1      test5
1      test2  response1
2      test3      test7
3      test4  response3
4  response4      test9

在寻求任何进一步建议之前:
df['Name(可选)].isnull
不是方法调用,而是对方法的引用。这个表达式总是
True
。让我检查一下,然后再给你回复。调整为pd.isnull(df['Name(可选)')),我希望这是一个方法调用。请参阅下面的代码。如果你需要一些修改,请让我知道。非常感谢。