我有一个像这样的数据框 -
0
0 a 43
1 b 630
2 r 587
3 i 462
4 g 153
5 t 266
我想创建一个看起来像这样的新数据框 -
a b r i g t
0 43 630 587 462 153 266
答案 0 :(得分:2)
您可以通过df.T
或df.transpose()
转换您的数据框:
df = pd.DataFrame([['A', 1], ['B', 2], ['C', 3], ['D', 4], ['E', 5]],
columns=['col1', 'col2'])
print(df)
col1 col2
0 A 1
1 B 2
2 C 3
3 D 4
4 E 5
res = df.set_index('col1').T
结果:
print(res)
col1 A B C D E
col2 1 2 3 4 5
答案 1 :(得分:1)
如果您只有一个格式为a 43
的列,则应该有效:
df.columns = ['col']
df = pd.DataFrame(df.col.str.split(' ',1).tolist(), columns = ['col1','col2']).T.reset_index(drop=True)
df = df.rename(columns=df.iloc[0]).drop(df.index[0])
输入:
df = pd.DataFrame(data=[
['a 43',],
['b 630'],
['r 587']],
columns=['col'])
col
0 a 43
1 b 630
2 r 587
输出:
a b r
1 43 630 587
答案 2 :(得分:1)
使用split进行列表推导创建二维数组,然后按构造函数创建新Dataframe
:
a = np.array([x.split() for x in df['0']])
df = pd.DataFrame([a[:, 1]], columns=a[:, 0])
print (df)
a b r i g t
0 43 630 587 462 153 266