首页 > 解决方案 > 当列名未知时,从 Python 中的 DataFrame 中识别列名

问题描述

我运行一个 for 循环来执行几个 SQL 查询。我将结果捕获在 DataFrame 中(再次在循环内),如下所示,用于两个验证。

Test1 的数据帧:

index  column1     column2   
0    jack          100   
1    bill          200   
2    Tom           300       

DATAFRAME 寻找 Test2:

index  column1    
0    102345    
1    102345   

我必须将每个 Test 的 Dataframe 的结果写入 Oracle 中的另一个表。为此,我需要获取列名。我无法确定循环中给定时间点存在多少列名称,因为 Dataframe 可以具有 1-5 列,具体取决于 SQL 运行。有没有办法做到这一点 。

从表中读取并写入 DataFrame 的代码:

def get_src_query_metadata(cursor, sql_query):

   cursor.execute(sql_query)
   columns = [col[0] for col in cursor.description]
   cursor.rowfactory = lambda *args: dict(zip(columns, args))
   data = pd.DataFrame(cursor.fetchall())
   return data

def get_target_query_metadata(cursor, sql_query):

   cursor.execute(sql_query)
   columns = [col[0] for col in cursor.description]
   cursor.rowfactory = lambda *args: dict(zip(columns, args))
   data = pd.DataFrame(cursor.fetchall())
   return data
              
def main():
   
           _JobDict_src = get_src_query_metadata(cursor, src_query[i])
           _JobDict_tgt = get_target_query_metadata(cursor, target_query[i])

如何将列名及其值分配给单独的变量。

标签: pythonpython-3.xpandas

解决方案


您可以通过此循环查找和计算列名

coln=0
for col in df.columns:
    coln+=1
    print(col)

print(coln)   

并通过以下方式查找数据类型

for col in df.dtypes:
    print(col)

推荐阅读