我是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
答案 0 :(得分:0)
您可以使用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 |
---------------------