python - 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 是最大值,但不应出现两次。
解决方案
尝试更改df.groupby('Customer')['version'].max().reset_index()
为df = df.groupby('Customer')['version'].max().reset_index()
.
看起来您正在创建视图/副本,但没有覆盖原始df
.
推荐阅读
- c++ - 类模板上一个特定函数的未解析外部符号
- angular - Angular 7 - 带有订阅的 observable 的单元测试
- c - 释放一部分 malloc
- python - 在python中编写一个非常大或非常小的数字的for循环
- python - Pandas:组合具有不同时间频率的列
- swagger - 从 $ref 中提取域到常量
- angularjs - 删除元素时未选中单选按钮
- javascript - Lodash for 循环在使用“i”时返回未定义,但适用于设置值
- android - android自定义布局在使用'include'时相互覆盖
- rxjs - RXJS:组合可观察对象以按顺序发出