如何插入熊猫的每一秒?

时间:2017-03-27 17:42:26

标签: python pandas dataframe

基本上,我有DataFrame,如下所示:

  c1 c2 
0  a  b  
1  c  d  
2  e  f  
3  g  h  

我需要将它转换为这个:

  c1 
0  a   
1  b   
2  c   
3  d
4  e
...

我知道如何从第二列获取所有值:

second_col_items = [df[['1']].iloc[i].item() for i in range(0,len(df.index))] 

但我坚持插入。我需要在循环中插入行,而且,我需要在现有行之间插入新行。它甚至可能吗?

所以,我的问题是:如何遍历列表(在我的情况下为second_col_items)并将其值插入DataFrame中的每一行?提前谢谢!

2 个答案:

答案 0 :(得分:5)

您可以使用stack()方法:

来源DF

In [2]: df
Out[2]:
  c1 c2
0  a  b
1  c  d
2  e  f
3  g  h

堆叠

In [3]: df.stack()
Out[3]:
0  c1    a
   c2    b
1  c1    c
   c2    d
2  c1    e
   c2    f
3  c1    g
   c2    h
dtype: object

stack + reset_index

In [4]: df.stack().reset_index(drop=True)
Out[4]:
0    a
1    b
2    c
3    d
4    e
5    f
6    g
7    h
dtype: object

In [5]:

答案 1 :(得分:3)

您可以使用ravelflatten放松身心。两者都是numpy方法,可以应用valuespd.DataFrame

pd.Series属性

解决方案

pd.Series(df.values.ravel(), name='c1')

0    a
1    b
2    c
3    d
4    e
5    f
6    g
7    h
Name: c1, dtype: object

或者

pd.DataFrame(dict(c1=df.values.ravel())

  c1
0  a
1  b
2  c
3  d
4  e
5  f
6  g
7  h

天真时间测试

enter image description here