【问题标题】:Multiple entries in Pandas dataframePandas 数据框中的多个条目
【发布时间】:2021-04-23 17:51:48
【问题描述】:

我已阅读 this post 以尝试为我的问题应用解决方案。我有一个熊猫数据框生成如下:

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 是最大值,但不应出现两次。

【问题讨论】:

    标签: python sql pandas dataframe


    【解决方案1】:

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

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

    【讨论】:

    • 嗨!感谢您的快速回复。你很准。我完全错过了,忘记将视图分配给 df。
    • 我还注意到 date2 中的重复值导致它显示两次。
    猜你喜欢
    • 2020-08-29
    • 2021-11-06
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多