Могу ли я получить concat (), чтобы игнорировать имена столбцов и работать только в зависимости от положения столбцов? - PullRequest
1 голос
/ 27 марта 2019

В документах , по крайней мере, начиная с версии 0.24.2, указано, что pandas.concat может игнорировать индекс, с ignore_index = True, но

Обратите внимание на значения индексана других осях все еще соблюдаются в соединении.

Есть ли способ избежать этого, то есть объединить, основываясь только на позиции, и игнорируя имена столбцов?

Я вижу два варианта:

  • переименовать столбцы так, чтобы они совпадали, или
  • преобразовать в numpy, объединить в numpy, затем из numpy обратно в pandas

Существуют ли более элегантные способы?

Например, если я хочу добавить серию s в качестве дополнительной строки в фрейм данных df, я могу:

  • преобразовать s в фрейм
  • транспонировать его
  • переименовать его столбцы, чтобы они были такими же, как в df
  • сцепить

Это работает, но кажется очень "непитонным"!

Ниже приведен пример с игрушкой;этот пример с фреймом данных и рядом, но та же концепция применима к двум фреймам данных.

import pandas as pd

df=pd.DataFrame()
df['a']=[1]
df['x']='this'
df['y']='that'

s=pd.Series([3,'txt','more txt'])
st=s.to_frame().transpose()
st.columns=df.columns
out= pd.concat( [df, st] , axis=0, ignore_index=True)

1 Ответ

1 голос
/ 28 марта 2019

В случае 1 dataframe и 1 series вы можете сделать:

df.loc [df.shape [0],:] = s.values ​​

...