提问人:Prmake 提问时间:10/11/2023 最后编辑:marc_sPrmake 更新时间:10/12/2023 访问量:65
为指定索引的 DataFrame 的第一个空列添加值
Add value to the first empty column of DataFrame for specified index
问:
我有一个变量列表。对于每个变量,我将变量添加到 DataFrame 的新行中,然后运行 function :results
order_analysis
for i in var_list:
order_number = i
row = (results.last_valid_index())
new_row = row + 1
results.loc[new_row, 'Order'] = order_number
order_analysis()
添加新行后和之前的 DataFrame:results
order_analysis
Order Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8
0 123 NaN NaN NaN NaN NaN NaN NaN NaN
如前所述,对于每个变量 (i) 运行。该函数至少产生 a 和 。如果 is 只是空格,则它再次运行。根据我的数据,在最多运行 4 次后,有一个(因此有 8 列)。然后它返回到循环。order_analysis
Number_Result
Date_Result
Project_Result
order_analysis
Project_Result
var_list
def order_analysis():
# (Majority of the function)
# Results of the analysis:
Number_Result = df1['Number'].loc[df1.index[indexbelow0]]
Date_Result = df1['Date'].loc[df1.index[indexbelow0]]
Project_Result = df1['Proj.'].loc[df1.index[indexbelow0]]
if str.isspace(Project_Result):
print('Number:', Number_Result)
print('Date:', Date_Result)
order_analysis()
else:
return
目前,我打印了 和 .相反,我想将这些结果添加到基于变量 (i) 添加的行的 DataFrame 中的第一个空列中。例如,变量 (123) 运行 2 次,变量 (456) 运行 4 次,变量 (789) 仅运行 1 次。然后,DataFrame 应如下所示:Number_Result
Date_Result
order_analysis
order_analysis
order_analysis
results
Order Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8
0 123 Result Result Result Result NaN NaN NaN NaN
0 456 Result Result Result Result Result Result Result Result
0 789 Result Result NaN NaN NaN NaN NaN NaN
但是,与用于查找第一个空行不同,我不知道如何在特定行上查找第一个空列。有什么想法吗?last_valid_index()
答:
请注意,last_valid_index
也是一个 Series 方法。因此,如果你对一行进行切片,这将给你一个列索引。
也就是说,您还可以对 NA 列索引进行切片,然后使用 next
查找第一个索引(如果有的话,否则):None
col = next(iter(df.columns[df.iloc[0].isna()]), None)
或者,如果您确定存在匹配项:
col = df.columns[df.iloc[0].isna()][0]
# or
col = df.iloc[0].isna().idxmax()
输出:'Column5'
评论