3
我目前正试图找出将单个panadas DataFrame行分割成多个稍有变化的行的有效方法。试想一下,这样的结构:用熊猫分割DataFrame行
A C1 C2 C3 C4
1 a b c a
2 b a e b a
3 g c
4 d e
,我想用结构像那样结束了:
A C
1 a b
2 a c
3 a a
4 b a
5 b e
6 b b
7 b a
8 g c
9 d e
10 d e
到目前为止,我一直在使用循环和创造这样的字典(df是我的数据框):
rows = []
for i, r in df.iterrows():
tmp = r[1:].dropna()
for c in tmp.values:
dict = {'A': r[0], 'C': c}
rows.append(dict)
不幸的是,这种方法极其缓慢。到目前为止,在我和熊猫一起工作之后,我发现只使用它时,执行时间可以得到显着提高,但我没有太多的经验来弄清楚如何更快地完成这种情况。
有人可以建议,可以做些什么来加快速度?
非常感谢您对很好的答案。我已经创建了一些其他方法来选择所有'C *'列:'pd.melt(df,id_vars ='A',value_vars = list(df.columns [1:]),value_name ='C')[[[ 'A', 'C']。dropna()'。我猜测这是更普遍的做法。 – sebap123
@ sebap123,是的,它看起来更好,但它不适用于这组列:'['C1','A','C2','C3',...]' – MaxU
我完全同意。但在这种情况下,我可能会做'list(df.columns [0])+ list(df.columns [2:])''。 – sebap123