簡體   English   中英

Pandas concat 不斷添加新的索引列

[英]Pandas concat keeps adding new index columns

我對 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')

多次運行代碼時會發生這樣的事情

您可以使用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  |
---------------------

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM