如何在熊猫数据框中将同名的列合并为一个,以便所有列都是唯一的?

时间:2019-07-03 07:20:41

标签: pandas

我有一个看起来像这样的数据框:

In [268]: dft.head()                                                                                 
Out[268]: 
ticker     BYND           UBER      UBER     UBER  ...        ZM       ZM          BYND       ZM
0       analyst         worlds      uber  revenue  ...   company   owning           pet   things
1        moskow           apac      note     uber  ...       try   things  humanization    users
2        growth  anheuserbusch    growth   target  ...   postipo  unicorn      products  revenue
3         stock           kong  analysts   raised  ...  software  revenue        things  million
4        target    uberbeating     stock   rising  ...  earnings  million          pets   direct

[5 rows x 500 columns]

In [269]: dft.columns.unique()                                                                       
Out[269]: Index(['BYND', 'UBER', 'LYFT', 'SPY', 'WORK', 'CRWD', 'ZM'], dtype='object', name='ticker')

如何合并这些列,以便每个股票行情记录只有一个唯一的列名?

2 个答案:

答案 0 :(得分:0)

也许您应该尝试复制您希望加入的列,然后用您拥有的副本扩展第一列。

答案 1 :(得分:0)

代码:

首先将所有列的名称转换为小写或大写形式,以免标题不匹配。

def merge_(df):
  '''Return the data-frame with columns with the same lowercase'''

  # Get the list of unique columns in lowercase
  columns = set(map(str.lower,df.columns))
  df1 = pd.DataFrame(data=np.zeros((len(df),len(columns))),columns=columns)

  # Merging the matching columns
  for col in df.cloumns:
    df1[col.lower()] += df[col] # words are in str format so '+' will concatenate 


  return df1