熊猫-通过重复值的concat列

时间:2018-06-21 14:42:36

标签: python pandas dataframe concat pandas-groupby

如果字段中的值相同,则尝试连接数据框的列。我会自我解释。假设我有这个数据框:

peter   brian   peter   mike   brian   
  2       3       4       5      6
  4       6       1       7      5

然后我要考虑第一行中重复的值来合并列:

peter   brian   mike
  2       3       5
  4       6       7
  4       6
  1       5

重要的是要阐明我不能通过直接调用名称(“ peter”,“ mike”等)来串联,因为我要在其中使用的数据框具有数千列。这个想法是自动找到重复的名称并将它们连接起来。

1 个答案:

答案 0 :(得分:3)

这是对NumPy数组使用pd.concat的一种方法:

res = pd.concat([pd.Series(df[col].values.flatten(), name=col) \
                 for col in df.columns.unique()], axis=1)

print(res)

   peter  brian  mike
0      2      3   5.0
1      4      6   7.0
2      4      6   NaN
3      1      5   NaN

注释mike被强制为float,因为它包含NaN值。

说明

  • df.columns.unique提取唯一的列名。
  • df[col].values.flatten从特定名称的所有系列中提取值作为NumPy数组,然后将它们展平为一维数组。
  • pd.Series将数组转换为序列对象。
  • 我们通过列表理解来迭代所有这些唯一的列名。
  • pd.concat将一系列列表连接到一个数据框中。