我有以下df:
import pandas as pd
import numpy as np
output = [['Owner', 'Database', 'Schema', 'Table', 'Column', 'Comment', 'Status'], ['', 'DEV', 'AIRFLOW', 'TASK_INSTANCE', '_LOAD_DATETIME', 'Load datetime'], ['', 'DEV', 'AIRFLOW', 'TEST', '_LOAD_FILENAME', 'load file name', 'ADDED'],['', 'DEV', 'AIRFLOW', 'TEST_TABLE', 'TEST_COL', 'COMMENT TEST'],]
df = pd.DataFrame(output[1:], columns=output[0])
query_list = []
empty_status_idx = []
for index, row in df.iterrows():
if row['Status'] is None:
sql = f"ALTER TABLE {row['Table']} ALTER {row['Column']} COMMENT {row['Comment']}; "
# idx = np.where(df["Status"] is None)
# idx = df.index[df['Status']]
idx = df.iloc[df['Status']]
empty_status_idx.append(idx)
print(f'idx: {idx}')
query_list.append(sql)
query_list
我看到以下idx
:错误
TypeError:int((参数必须是字符串、类似字节的对象或数字,而不是"NoneType">
我想看到的是,如果None单元格的位置列表:
empty_status_idx = [0, 2]
上面的idx值我从这个堆栈溢出问题的一些答案中得到
您也可以使用np.where
方法,如下所示:
import numpy as np
empty_status_idx = np.where(df.Status.isnull())[0].tolist()
[0, 2]
您过于复杂了:
empty_status_idx = df[df['Status'].isnull()].index.tolist()
Out[65]: [0, 2]