首页 > 解决方案 > 如何在 Python Pandas 数据框中的每行下添加 24 行

问题描述

原始数据框:

a1 a2 a3 a4 a5 a6
b1 b2 b3 b4 b5 b6

新数据框:

a1 a2 a3 a4 a5 a6
(第 1 个空行)
(第 2 个空行)
...
(第 24 个空行)
b1 b2 b3 b4 b5 b6
(第一个空行)
(第 2 个空行)
...
(第 24 个空行)

问题是:如何进行上述转换?非常感谢。

标签: pythonpandasdataframe

解决方案


利用:

print (df)
    0   1   2   3   4   5
0  a1  a2  a3  a4  a5  a6
1  b1  b2  b3  b4  b5  b6

按重复值的数量首先使用多个索引值,然后使用DataFrame.reindexwith np.arange

N = 5
df.index = df.index * (N + 1)
df = df.reindex(np.arange(df.index.max() + N + 1))
print (df)
      0    1    2    3    4    5
0    a1   a2   a3   a4   a5   a6
1   NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  NaN  NaN
6    b1   b2   b3   b4   b5   b6
7   NaN  NaN  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN
10  NaN  NaN  NaN  NaN  NaN  NaN
11  NaN  NaN  NaN  NaN  NaN  NaN

编辑:

print (df)
    0  1   2   3   4  5
0  a1  2  a3  a4  a5  6
1  b1  2  b3  b4  b5  6

N = 5
df.index = df.index * (N + 1)
df = df.reindex(np.arange(df.index.max() + N + 1))
print (df)
      0    1    2    3    4    5
0    a1  2.0   a3   a4   a5  6.0
1   NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  NaN  NaN
6    b1  2.0   b3   b4   b5  6.0
7   NaN  NaN  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN
10  NaN  NaN  NaN  NaN  NaN  NaN
11  NaN  NaN  NaN  NaN  NaN  NaN

def convert_int_with_NaNs(x):
    try:
        return x.astype('Int64')
    except Exception:
        return x

df = df.apply(convert_int_with_NaNs)
print (df)
      0    1    2    3    4    5
0    a1    2   a3   a4   a5    6
1   NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  NaN  NaN
6    b1    2   b3   b4   b5    6
7   NaN  NaN  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN
10  NaN  NaN  NaN  NaN  NaN  NaN
11  NaN  NaN  NaN  NaN  NaN  NaN

推荐阅读