将列与熊猫连接

时间:2019-06-18 15:59:57

标签: python pandas

我正在尝试将多个列连接在一起

数据框:

df

   One  Two
0    a    d
1    b    e
2    c    f

我尝试过:

df['all_columns'] = df.apply(''.join, axis = 1)

错误:

  

TypeError :(“序列项1:预期的str实例,找到了浮点数”,“发生在索引0”)

我期望:

df

   all_columns  
0            a    
1            b    
2            c    
3            d
4            e
5            f

我正在尝试一种解决方案而不必使用我的列的名称,因为它们的名称很大

3 个答案:

答案 0 :(得分:3)

pd.concat

# @piR's magic
pd.concat(map(df.get, df), ignore_index=True).to_frame('all_cols')

  all_cols
0        a
1        b
2        c
3        d
4        e
5        f

更多concat选项:

pd.concat(dict(df.items()), ignore_index=True).to_frame('all_columns')
pd.concat({**df}, ignore_index=True).to_frame('all_columns')

  all_cols
0        a
1        b
2        c
0        d
1        e
2        f

ravel + DataFrame()重构

pd.DataFrame(df.to_numpy().ravel('F'), columns=['all_cols'])

  all_cols
0        a
1        b
2        c
3        d
4        e
5        f

melt(带客房清洁服务)

df.melt(value_name='all_columns').drop('variable', 1)

  all_columns
0           a
1           b
2           c
3           d
4           e
5           f

答案 1 :(得分:3)

您需要简单的unstack

df.unstack().reset_index(drop=True).to_frame('allcolumns')

输出:

    allcolumns
0   a
1   b
2   c
3   d
4   e
5   f

答案 2 :(得分:1)

因此,据我了解,您希望将所有列值组合到单个列中
df
Prefix Assignment Tutorial Midterm TakeHome Final
5 57.14 34.09 64.38 51.48 52.50
所以最终结果应该是



最终df

all_columns
5
57.14
34.09
64.38
51.48
52.50

您可以执行以下操作: final_res = pd.DataFrame(data={"all_columns":list(df.values.flatten())})