concat不断添加新的索引列

2024-04-29 18:59:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python和Pandas很陌生,我的小项目有一个concat(?)-问题。代码的工作方式几乎与预期的一样,但在一行中多次运行时,它会不断添加新的索引列。这是我不想让它做的事。我一直在尝试各种各样的技巧,比如删除第一列、隐藏索引和重置索引,但都没有成功。我可以在Excel中删除额外的列,但我认为可以通过某种方式更改代码来解决

关于Excel数据:第一行包括列标题,并且没有索引

你们知道我的代码有什么问题吗? 您还可以提出改进建议:)

import pandas as pd
import numpy as np


table1_data = r'C:\Users\--->file1.xlsx'
table2_data = r'C:\Users\--->file2.xlsx' # this is always new data 
database_data = r'C:\Users\--->file3xlsx'

table1 = pd.read_excel(table1_data, header=0, index_col=None,keep_default_na=True)
table2 = pd.read_excel(table2_data, header=0, index_col=None,keep_default_na=True)
database = pd.read_excel(database_data, header=0, index_col=None,keep_default_na=True)


sold = table1[~table1.License.isin(table2.License)]
sold['Deleted'] = table2.loc[1,'Deleted']

database = pd.concat([database, sold])

s = sold.set_index('License')['Deleted']
table1['Deleted'] = table1['License'].map(s).fillna(table1['Deleted']).astype('datetime64[ns]')

cond = table1['License'].isin(sold['License'])
table1.drop(table1[cond].index, inplace = True)

bought = table2[~table2.License.isin(table1.License)]
bought['Deleted'] = ''

table1 = pd.concat([table1,bought])




database.to_excel(r'C:\Users\--->file3.xlsx')
table1.to_excel(r'C:\Users\--->file1.xlsx')

Something like this happens when running code multiple times


Tags: 代码truedataindexlicensexlsxexcelusers
1条回答
网友
1楼 · 发布于 2024-04-29 18:59:30

您可以使用ignore_index=True

A = pd.DataFrame(data={"c1": [1, 2], "c2": [3, 4]})
B = pd.DataFrame(data={"c3": [5, 6], "c4": [7, 8]})

C = pandas.concat([A, B], ignore_index=True)
C
          
|   |c1 |c2 |c3 | c4|
         
| 0 |1  |3  |NaN|NaN|
| 1 |2  |4  |NaN|NaN|
| 2 |NaN|NaN|5  |7  |
| 3 |NaN|NaN|6  |8  |
          -

相关问题 更多 >