Почему у моего выходного фрейма данных есть два столбца с одинаковыми индексами? - PullRequest
5 голосов
/ 02 ноября 2019

У меня есть два кадра данных

результаты:

0  2211 E Winston Rd Ste B, 92806, CA  33.814547 -117.886028   4  
1            P.O. Box 5601, 29304, SC  34.945855  -81.930035   6    
2           4113 Darius Dr, 17025, PA  40.287768  -76.967292   8  

acctypeDF:

0    rooftop
1    place
2    rooftop

Я хотел объединить оба этих кадра данных, поэтому я сделал:

import pandas as pd
resultsfinal = pd.concat([results, acctypeDF], axis=1)

Но вывод:

resultsfinal
Out[155]: 
                                    0          1           2   3        0
0  2211 E Winston Rd Ste B, 92806, CA  33.814547 -117.886028   4  rooftop
1            P.O. Box 5601, 29304, SC  34.945855  -81.930035   6    place
2           4113 Darius Dr, 17025, PA  40.287768  -76.967292   8  rooftop

Как видите, выход повторяет номер индекса 0. Почему это происходит? Моя цель - удалить первый индекс (первый столбец), в котором есть адреса, но я получаю эту ошибку:

resultsfinal.drop(columns='0')
 raise KeyError('{} not found in axis'.format(labels))

KeyError: "['0'] not found in axis"

Я также попытался:

resultsfinal = pd.concat([results, acctypeDF], axis=1,ignore_index=True)

resultsfinal
Out[158]: 
                                    0          1  ...        4        5
0  2211 E Winston Rd Ste B, 92806, CA  33.814547  ...  rooftop  rooftop
1            P.O. Box 5601, 29304, SC  34.945855  ...    place    place

Но, как вы видите выше, хотя проблема повторения индекса 0 исчезает, создается двойной столбец (5)

Если я сделаю:

resultsfinal = results[results.columns[1:]]

resultsfinal
Out[161]: 
           1           2  ...                                   0        0
0  33.814547 -117.886028  ...  2211 E Winston Rd Ste B, 92806, CA  rooftop
1  34.945855  -81.930035  ...            P.O. Box 5601, 29304, SC    place

print(resultsfinal.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 5 columns):
0    10 non-null object
1    10 non-null float64
2    10 non-null float64
3    10 non-null int64
4    10 non-null object
dtypes: float64(2), int64(1), object(2)
memory usage: 480.0+ bytes

1 Ответ

1 голос
/ 02 ноября 2019

Используйте ingnore_index=True:

resultsfinal = pd.concat([results, acctypeDF], axis=1,ignore_index=True)

или

resultsfinal = pd.concat([results, acctypeDF], axis=1)
resultsfinal.columns=range(len(resultsfinal.columns))
print(resultfinal)

удалить первый столбец :

resultsfinal[resultsfinal.columns[1:]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...