有没有一种快速的方法可以在PANDAS中对列进行子集设置



我正在尝试设置一个PANDAS项目,可以用来比较并返回excel和csv文件中随时间变化的差异。目前,我将excel.csv文件加载到panda中,并为它们分配一个版本列。我给他们分配了一个";版本";列,因为在我的最后一步中,我希望程序为我创建一个只包含";新的";版本文件,这样我就不必更新整个数据库,只需更新已经更改的数据点。

old = pd.read_excel(landdata20201122.xlsx')
new = pd.read_excel(landdata20210105.xlsx')
old['version'] = "old"
new['version'] = "new"

我将工作表合并为一个,然后根据原始文件中的所有列删除重复的行。我必须对数据进行子集处理,因为如果程序查看我添加的版本列,它将不会被视为重复行。报表列在下方

df2 = df1.drop_duplicates(subset=["UWI", "Current DOI Partners", "Encumbrances", "Lease Expiry Date", "Mineral Leases", "Operator", "Attached Land Rights", "Surface Leases"])
df2.shape

我想知道是否有一种更快的方法来对数据进行子集设置,基本上是按照我目前的设置方式,我必须列出每个列的标题。我的一些表有100多列,所以当我只想否定1列时,这是一项艰巨的工作。有没有一种方法可以填充所有的列标题,并删除我不想看到的标题?或者有没有一种方法可以在drop duplicates命令中输入我不想比较的列,而不是输入除一列之外的所有列?

如果我可以列出我不想比较的列,我将能够对我正在处理的更多数据使用相同的脚本,因为每次比较工作表时我不必编辑drop_duplicates语句。

感谢您的帮助,提前感谢!

如果我理解得很好:

  1. 将标题存储在列表中
  2. 手动删除不需要的名称
  3. drop_duplicates()的子集内,放置列表

如果要删除的列多于要保留的列,请手动添加列表中所有需要的列。有了清单,你就不需要每次都写。

如何迭代列表:

list=['first', 'second', 'third']
for i in list:
print(i)
# Output: 'first', 'second', 'third'

最新更新