熊猫数据帧重塑

时间:2016-12-14 22:06:58

标签: python pandas

我有一个数据框如下所示

>> df

A 1
B 2
A 5
B 6
A 7
B 8

如何重新格式化以使其成为

A 1 5 7 
B 2 6 8

由于

3 个答案:

答案 0 :(得分:2)

给定像这样的数据框

df = pd.DataFrame(dict(one=list('ABABAB'), two=range(6)))

你可以做到

df.groupby('one').two.apply(lambda s: s.reset_index(drop=True)).unstack()

#      0  1  2
# one         
# A    0  2  4
# B    1  3  5

(稍慢,结果略有不同)

df.groupby('one').apply(lambda d: d.two.reset_index(drop=True))

# two  0  1  2
# one         
# A    0  2  4
# B    1  3  5

第一种方法适用于DataFrameGroupBy,第二种方法使用SeriesGroupBy

答案 1 :(得分:0)

您可以抓取该系列并使用np.reshape来保持正确的尺寸。 订单=' F'使其滚动列(例如Fortran),订单=' C'滚动C之类的行 然后它进入数据框

df = pd.DataFrame(data=np.arange(10))
data = df['a'].values.reshape((2, 5), order='F')
df = pd.DataFrame(data=data, index=['a', 'b'])

答案 2 :(得分:-1)

您是如何生成此数据框的?我认为它应该是使用字典生成的,然后使用该字典生成数据帧。 d = {' A':[1,5,7],' B':[2,6,8]} df = pandas.DataFrame(data = d,index = [' p1',' p2',' p3'])

然后,如果需要,您可以使用df.T转置数据框。