Объединить несколько информационных кадров вместе - PullRequest
0 голосов
/ 25 июня 2018

У меня есть несколько (n) фреймов данных с переменной длиной строки и 3 столбцами в каждом. Мне просто нужен первый столбец каждого фрейма данных, поэтому я удалил остальные, используя df.drop.
Я хочу объединить их в один фрейм данных с n столбцами. Я использовал pd.concat для слияния.

    df1.drop(columns=['col2' ,'col3']).to_csv('df1.csv', sep=';')

    df2.drop(columns=['col2', 'col3']).to_csv('df2.csv', sep=';')

pd.concat([pd.concat([df1.drop(columns=['col2','col3']),
                      df2.drop(columns=['col2','col3'])] ,axis=1)])\
                        .to_csv('merged.csv', sep=';')

Это дает мне следующий вывод как CSV-файл:

    col1 (df1)  col1 (df1)
0   0.0 
1   0.055   
2   0.096   
3   0.131   
2074        70.997
2075        71.002
2076        71.065
2077        71.101

Итак, вы видите, что он просто добавляет столбцы в виде строк. Хотя, например, строка 3 в столбце 2 пуста. и строка 2074 в столбце 1 пуста. Я думал, что ось = 1 это исправит, но это не так.

Ожидаемый результат:

col1 (df1)        col1 (df1)
0   0.0             70.997
1   0.055           71.002
2   0.096           71.065
3   0.131           71.101

Если я попытаюсь axis = 1, ignoreIndex=True, имена моих столбцов изменятся на 0 и 1.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Изменить индекс df2 так же, как df1

df2.index=df1.index
df1['col1(df2)']=df2.col1
df1.rename(columns={'col1':'col1(df1)'})
Out[7]: 
   col1(df1)  col1(df2)
0      0.000     70.997
1      0.055     71.002
2      0.096     71.065
3      0.130     71.101
0 голосов
/ 25 июня 2018

Требуются одинаковые значения индекса в обоих фреймах данных, созданных reset_index и параметром reset_index(drop=True):

df3 = pd.concat([df1['col1'].reset_index(drop=True), 
                 df2['col1'].reset_index(drop=True)], axis=1)
df3.columns = ['col1 (df1)','col1 (df2)']
print (df3)
   col1 (df1)  col1 (df2)
0       0.000      70.997
1       0.055      71.002
2       0.096      71.065
3       0.131      71.101
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...