在上另一列的行之间插入列的行

2024-04-25 18:13:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由两列组成的df,如下所示:

    rows    A     B

    0       1     7
    1       9     11
    2       20    30
    3       32    35

我想创建另一列,以便将列A的每一行插入列B的两行之间

输出如下所示:

    rows    C

    0       7
    1       9
    2       11
    3       20
    4       30
    5       32
    6       35

非常感谢你的帮助


Tags: dfrows
2条回答

^{}^{}DataFrame构造函数一起使用:

a = df[['A','B']].values.ravel()[1:]

df1 = pd.DataFrame({'rows':np.arange(len(a)), 'C':a})
print (df1)
   rows   C
0     0   7
1     1   9
2     2  11
3     3  20
4     4  30
5     5  32
6     6  35

您还可以检查What is the difference between flatten and ravel functions in numpy?

或者使用^{}

df1 = (df.melt(['rows'], value_name='C')
        .sort_values('rows')['C']
        .iloc[1:]
        .reset_index(drop=True)
        .rename_axis('rows')
        .reset_index())
print (df1)
   rows   C
0     0   7
1     1   9
2     2  11
3     3  20
4     4  30
5     5  32
6     6  35

获取列AB的数组,然后使用flattenravel并从第一个索引获取值:

df1 = pd.DataFrame(df[['A','B']].values.flatten()[1:],columns=['C']).\
                   reset_index().rename(columns={'index':'rows'}

或:

df1 = pd.DataFrame(df[['A','B']].values.ravel()[1:],columns=['C']).\
                       reset_index().rename(columns={'index':'rows'})

print(df1)

   rows   C
0     0   7
1     1   9
2     2  11
3     3  20
4     4  30
5     5  32
6     6  35

相关问题 更多 >