Pandas数据帧,获取满足特定条件的列的行和索引



我有以下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]

最新更新