首页 > 解决方案 > Pandas 数据框中的多个条目

问题描述

我已阅读这篇文章以尝试对我的问题应用解决方案。我有一个生成如下的熊猫数据框:

def sql_query(query):
    import pyodbc as p
    import itertools
    import pandas as pd

    pd.set_option("display.max_rows", None, "display.max_columns", None)
    
    databaseName = 'dbName'
    username = '**************'
    password = '**************'
    server = '**************'
    driver = '{SQL Server Native Client 11.0}'

    CONNECTION_STRING = 'DRIVER='+driver+';SERVER='+server+';DATABASE='+databaseName+';UID='+username+';PWD='+ password

    conn = p.connect(CONNECTION_STRING)

    cursor = conn.cursor()
    cursor.execute(query)

    row = cursor.fetchone()     
    
    desc = cursor.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row))  
        for row in cursor.fetchall()]

    conn.close()

    df = pd.DataFrame(data)
    df.groupby('Customer')['version'].max().reset_index()
    
    print(df)

sql_query(query)

该代码输出了df,但我仍然发现了一些重复项。关于为什么会发生这种情况的任何原因?示例输出:

客户版本 date1 date2

0 | 0112233 | 01 | 2021-01-14 16:00:05.963 | 2020-07-05 21:43:49
1 | 0112234 | 02 | 2021-01-14 16:00:05.963 | 2021-01-12 08:49:56
2 | 0113355 | 08 | 2021-01-14 16:00:05.963 | 2021-01-14 11:27:08
3 | 0113355 | 08 | 2021-01-14 16:00:05.963 | 2021-01-14 11:27:08

我希望我的代码删除客户 0113355 的其中一行,因为它们的日期完全相同。关于为什么不删除重复项并返回列中的最大值的任何指针?08 是最大值,但不应出现两次。

标签: pythonsqlpandasdataframe

解决方案


尝试更改df.groupby('Customer')['version'].max().reset_index()df = df.groupby('Customer')['version'].max().reset_index().

看起来您正在创建视图/副本,但没有覆盖原始df.


推荐阅读