Py学习  »  Python

python pandas数据帧整形

Gong • 5 年前 • 1391 次点击  

下面显示的数据是一个简化的示例。实际数据帧为3750行2列数据帧。我需要将数据帧重新构造为另一个结构。

A     A2
0.1   1
0.4   2
0.6   3
B     B2
0.8   1
0.7   2
0.9   3
C     C2
0.3   1
0.6   2
0.8   3

如何将上面的数据帧重塑为水平,如下所示:

A    A2    B    B2    C    C2
0.1  1     0.8  1     0.3  1
0.4  2     0.7  2     0.6  2
0.6  3     0.9  3     0.8  3
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/42995
 
1391 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Mohamed Thasin ah
Reply   •   1 楼
Mohamed Thasin ah    6 年前

如果你不想硬编码你的价值观,试试这个。

df['header']=pd.to_numeric(df[0],errors='coerce')
l= df['header'].values
m_l = l.reshape((np.isnan(l).sum(),-1))[:,1:]
h=df[df['header'].isnull()][0].values
print pd.DataFrame(dict(zip(h,m_l)))

输出:

     A    B    C
0  0.1  0.8  0.3
1  0.4  0.7  0.6
2  0.6  0.9  0.8
yatu
Reply   •   2 楼
yatu    6 年前

您可以重塑数据并创建新的数据帧:

cols = 6
rows = 4
df = pd.DataFrame(df.values.T.reshape(cols,rows).T)
df.rename(columns=df.iloc[0]).drop(0)

    A    B    C  A2 B2 C2
1  0.1  0.8  0.3  1  1  1
2  0.4  0.7  0.6  2  2  2
3  0.6  0.9  0.8  3  3  3