我有一个数据框如下所示
>> df
A 1
B 2
A 5
B 6
A 7
B 8
如何重新格式化以使其成为
A 1 5 7
B 2 6 8
由于
答案 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转置数据框。