pandas concat () не включается в те же столбцы - PullRequest
3 голосов
/ 15 февраля 2020

У меня есть два кадра данных, которые я пытаюсь объединить. Я удостоверился, что они имеют одинаковое количество столбцов и что типы данных совпадают.

Однако при вызове pd.concat([df1, df2], ignore_index=True) я возвращаю фрейм данных с 24 столбцами и множеством значений NaN. Я ожидаю, что pd.concat() просто поместит второй фрейм данных «под» первым (поэтому по умолчанию; axis=0).

Что я делаю неправильно?

>>> df1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 798810 entries, 0 to 798809
Data columns (total 12 columns):
 #   Column  Non-Null Count   Dtype  
---  ------  --------------   -----  
 0   0       798810 non-null  Int64  
 1   1       798810 non-null  float64
 2   2       798810 non-null  float64
 3   3       798810 non-null  float64
 4   4       798810 non-null  float64
 5   5       798810 non-null  float64
 6   6       798810 non-null  Int64  
 7   7       798810 non-null  float64
 8   8       798810 non-null  Int64  
 9   9       798810 non-null  float64
 10  10      798810 non-null  float64
 11  11      798810 non-null  float64
dtypes: Int64(3), float64(9)
memory usage: 75.4 MB
>>> df2.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 500 entries, 0 to 499
Data columns (total 12 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   0       500 non-null    Int64  
 1   1       500 non-null    float64
 2   2       500 non-null    float64
 3   3       500 non-null    float64
 4   4       500 non-null    float64
 5   5       500 non-null    float64
 6   6       500 non-null    Int64  
 7   7       500 non-null    float64
 8   8       500 non-null    Int64  
 9   9       500 non-null    float64
 10  10      500 non-null    float64
 11  11      500 non-null    float64
dtypes: Int64(3), float64(9)
memory usage: 48.5 KB
>>> pd.concat([df1, df2], ignore_index=True).shape
(799310, 24)

1 Ответ

2 голосов
/ 15 февраля 2020

Я думаю, что имена столбцов в одном Dataframe не цифры c, а строки, поэтому вы можете попробовать:

df1.columns = df1.columns.astype(int)
df2.columns = df2.columns.astype(int)

df = pd.concat([df1, df2], ignore_index=True)

Или:

df = pd.concat([df1.rename(columns=int), df2.rename(columns=int)], ignore_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...