【问题标题】:How to capture list data into data frame如何将列表数据捕获到数据框中
【发布时间】:2019-12-28 17:09:13
【问题描述】:

我有下面的代码从两个不同的表中捕获数据,比较两个结果并获得输出。

EmplTbl = cur.execute("select A , B , C from EmployeeTable where EmplName in ('A','B')") 
emp_entries = set(cur)

DeptTbl = cur.execute("select A , B , C from DeptTable") 
dept_entries = set(cur) 

print(emp_entries.difference(dept_entries))

下面是我收到的输出

Output: 

{(1, A, X),(2, B, Y),(3, B, Y)}

当我试图将它分配给数据框时,我得到“'dict' object has no attribute 'append'” 如何使用 A、B、C 列或任何其他方式将上述“数据”分配到正确的数据框中。

预期输出:

 A, B, C     
 1, A, X
 2, B, Y
 3, B, Y

【问题讨论】:

    标签: python pandas oracle list dataframe


    【解决方案1】:

    您可以将集合传递给DataFrame 构造函数:

    a = {(1, 'A', 'X'),(2, 'B', 'Y'),(3, 'B', 'Y')}
    
    cols = ['A','B','C']
    df = pd.DataFrame(a, columns=cols)
    print (df)
       A  B  C
    0  2  B  Y
    1  1  A  X
    2  3  B  Y
    

    如果需要按第一个值排序:

    a = {(1, 'A', 'X'),(2, 'B', 'Y'),(3, 'B', 'Y')}
    
    L  = sorted(list(a), key=lambda tup: tup[0])
    cols = ['A','B','C']
    df = pd.DataFrame(L, columns=cols)
    print (df)
       A  B  C
    0  1  A  X
    1  2  B  Y
    2  3  B  Y
    

    如果写入csv,则删除索引值使用:

    df.to_csv(file, index=False)
    

    【讨论】:

    • 非常感谢您的回复。但是我可以排除索引吗?还有没有可能我可以通过变量传递列名。而不是 columns=['A','B','C']) ,我可以做这样的事情 columns=[Variable] 吗?
    • @我可以再问一个问题吗?
    • @Arya - 当然,没问题。
    • 代替 -- cur.execute("select A , B , C from DeptTable") -- ,而不是在查询中指定列名 A,B,C ,我如何传递列名还有一个变量,比如 --- cur.execute("select $Variable from DeptTable")
    • @Arya - 使用cur.execute("select {} from DeptTable".format(Variable))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2021-09-14
    • 2017-10-21
    相关资源
    最近更新 更多