我正在尝试将多个列连接在一起
数据框:
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
我正在尝试一种解决方案而不必使用我的列的名称,因为它们的名称很大
答案 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())})