我一直在尝试将python大熊猫从一种表示形式转换为另一种表示形式,但是速度很慢:
我当前的数据框如下:
Column0, Column 1, Column 2, Column 3, Column 10...
p1 1 2 8 3
p2 2 4 9 6
Column0, sample, Exp
p1 Column 1 1
p1 Column 2 2
p1 Column 3 8
p1 Column 10 3
p2 Column 1 2
. . .
. . .
我使用iterrows
插入到新的数据框中,但速度确实很慢。第1,2列不是固定的,但我有一个包含所有名称的集合。
答案 0 :(得分:3)
IIUC,您可以使用melt
,
d = """Column0, Column 1, Column 2, Column 3, Column 10
p1, 1, 2, 8, 3
p2, 2, 4, 9, 6"""
from io import StringIO
df = pd.read_csv(StringIO(d),sep=',')
df2 = pd.melt(df,id_vars=['Column0'],var_name='Sample',value_name='Exp')
print(df2)
Column0 Sample Exp
0 p1 Column 1 1
1 p2 Column 1 2
2 p1 Column 2 2
3 p2 Column 2 4
4 p1 Column 3 8
5 p2 Column 3 9
6 p1 Column 10 3
7 p2 Column 10 6
pd.melt(df,id_vars=['Column0'],var_name='Sample',value_name='Exp').rename(
columns = {'Column0' : 'NewCol',...})