加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在Python Pandas中将行转换为列

发布时间:2020-12-20 10:34:38 所属栏目:Python 来源:网络整理
导读:我有以下 Python pandas数据帧: fruits | numFruits---------------------0 | apples | 101 | grapes | 202 | figs | 15 我想要: apples | grapes | figs-----------------------------------------Market 1 Order | 10 | 20 | 15 我查看了pivot(),pivot_t
我有以下 Python pandas数据帧:

fruits | numFruits
---------------------
0  | apples |   10
1  | grapes |   20
2  |  figs  |   15

我想要:

apples | grapes | figs
-----------------------------------------
Market 1 Order |    10  |   20   |  15

我查看了pivot(),pivot_table(),Transpose和unstack(),但似乎没有人给我这个.熊猫新手,所以所有的帮助赞赏.

解决方法

T你需要 set_index转置:

print (df.set_index('fruits').T)
fruits     apples  grapes  figs
numFruits      10      20    15

如果需要重命名列,则有点复杂:

print (df.rename(columns={'numFruits':'Market 1 Order'})
         .set_index('fruits')
         .rename_axis(None).T)
                apples  grapes  figs
Market 1 Order      10      20    15

另一个更快的解决方案是使用numpy.ndarray.reshape

print (pd.DataFrame(df.numFruits.values.reshape(1,-1),index=['Market 1 Order'],columns=df.fruits.values))

                apples  grapes  figs
Market 1 Order      10      20    15

时序:

#[30000 rows x 2 columns] 
df = pd.concat([df]*10000).reset_index(drop=True)    
print (df)


In [55]: %timeit (pd.DataFrame([df.numFruits.values],['Market 1 Order'],df.fruits.values))
1 loop,best of 3: 2.4 s per loop

In [56]: %timeit (pd.DataFrame(df.numFruits.values.reshape(1,columns=df.fruits.values))
The slowest run took 5.64 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops,best of 3: 424 μs per loop

In [57]: %timeit (df.rename(columns={'numFruits':'Market 1 Order'}).set_index('fruits').rename_axis(None).T)
100 loops,best of 3: 1.94 ms per loop

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读