如何在Python数据帧中的每行下添加24行

如何在Python数据帧中的每行下添加24行,python,pandas,dataframe,Python,Pandas,Dataframe,原始数据帧: a1 a2 a3 a4 a5 a6 b1 b2 b3 b4 b5 b6 新数据帧: a1 a2 a3 a4 a5 a6 (第一个空行) (第二空行) … (第24个空行) b1 b2 b3 b4 b5 b6 (第一个空行) (第二空行) … (第24空行) 问题是:如何执行上述转换?非常感谢。使用: print (df) 0 1 2 3 4 5 0 a1 a2 a3 a4 a5 a6 1 b1 b2 b3 b4 b5 b6 首先

原始数据帧:

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

新数据帧:

a1 a2 a3 a4 a5 a6
(第一个空行)
(第二空行)

(第24个空行)
b1 b2 b3 b4 b5 b6
(第一个空行)
(第二空行)

(第24空行)

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

使用:

print (df)
    0   1   2   3   4   5
0  a1  a2  a3  a4  a5  a6
1  b1  b2  b3  b4  b5  b6
首先按重复值的数量将多个索引值合并,然后与
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
编辑:



使用:

首先按重复值的数量将多个索引值合并,然后与
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
编辑:




要添加空行,可以使用以下说明:

your_dataframe=your_dataframe.append({},ignore_index=True)
要执行请求的转换,因为我不知道数据是如何形成的,也不知道它是如何索引的,我建议您创建一个新的空数据帧

对于每个初始数据帧条目,您应该将其插入到新的数据帧条目中,并按照我所描述的那样,将一个空行追加24次

下面是一个如何执行的示例:

##使用您自己的数据
数据=['a1',a2',a3',a4',a5',a6',['b1',b2',b3',b4',b5',b6']]
###在数据帧中加载数据
df=pd.DataFrame(数据)
##创建空数据帧
df2=pd.DataFrame()
##使用初始数据帧长度执行行迭代
长度=长度(测向索引)
##对于初始数据帧的每行
对于范围内的i(0,长度):
##将当前行追加到新数据帧
df2=df2.append(df[i:i+1],ignore_index=True)
##添加24个空行
对于范围(0,25)内的j:
df2=df2.append({},ignore_index=True)
因此,如果您的初始数据帧类似于:

01123445
0 a1 a2 a3 a4 a5 a6
1 b1 b2 b3 b4 b5 b6
执行脚本后,它将输出:

01123445
0 a1 a2 a3 a4 a5 a6
1楠楠楠楠楠楠楠
2楠楠楠楠楠楠
3楠楠楠楠楠楠
...
25楠楠楠楠楠
26 b1 b2 b3 b4 b5 b6
27楠楠楠楠楠
...
49楠楠楠楠楠
50楠楠楠楠楠
51楠楠楠楠楠楠

要添加空行,可以使用以下说明:

your_dataframe=your_dataframe.append({},ignore_index=True)
要执行请求的转换,因为我不知道数据是如何形成的,也不知道它是如何索引的,我建议您创建一个新的空数据帧

对于每个初始数据帧条目,您应该将其插入到新的数据帧条目中,并按照我所描述的那样,将一个空行追加24次

下面是一个如何执行的示例:

##使用您自己的数据
数据=['a1',a2',a3',a4',a5',a6',['b1',b2',b3',b4',b5',b6']]
###在数据帧中加载数据
df=pd.DataFrame(数据)
##创建空数据帧
df2=pd.DataFrame()
##使用初始数据帧长度执行行迭代
长度=长度(测向索引)
##对于初始数据帧的每行
对于范围内的i(0,长度):
##将当前行追加到新数据帧
df2=df2.append(df[i:i+1],ignore_index=True)
##添加24个空行
对于范围(0,25)内的j:
df2=df2.append({},ignore_index=True)
因此,如果您的初始数据帧类似于:

01123445
0 a1 a2 a3 a4 a5 a6
1 b1 b2 b3 b4 b5 b6
执行脚本后,它将输出:

01123445
0 a1 a2 a3 a4 a5 a6
1楠楠楠楠楠楠楠
2楠楠楠楠楠楠
3楠楠楠楠楠楠
...
25楠楠楠楠楠
26 b1 b2 b3 b4 b5 b6
27楠楠楠楠楠
...
49楠楠楠楠楠
50楠楠楠楠楠
51楠楠楠楠楠楠

谢谢您的回答。它可以工作,但所有整数输入都变成小数点后1位的值。如何解决这个问题?@CharlesYeung-列中的所有值在原始数据中都是整数?其中一些是整数integers@Charles由于您现在正在向列中引入
NaN
值,因此该列中的其他数值必须是
float
s-它们不能再是
int
s…@jezrael nice。。。没有意识到关于
Int64
。。。我当然可以在将来使用它,但我想我会等到它没有带有“实验性”的横幅:)谢谢你的回答。它可以工作,但所有整数输入都变成小数点后1位的值。如何解决这个问题?@CharlesYeung-列中的所有值在原始数据中都是整数?其中一些是整数integers@Charles由于您现在正在向列中引入
NaN
值,因此该列中的其他数值必须是
float
s-它们不能再是
int
s…@jezrael nice。。。没有意识到关于
Int64
。。。当然可以在将来使用它,但我想我会等到它上面没有“实验性”横幅:)正如我所说的,给定的istruction允许在数据帧的末尾添加一个空行。为了执行请求的操作,他可以按照我描述的方式使用此指令:创建一个新的dataframe,在原始dataframe上迭代,对于每个找到的条目,将条目附加到新dataframe,并附加24个空条目。不是最上等的,也不是最有效的,但它很有效。@jezrael根据要求更新了答案。希望现在更清楚。正如我所说的,给定的指令允许在数据帧的末尾添加一个空行。为了执行请求的操作,他可以按照我描述的方式使用此指令:创建一个新的dataframe,在原始dataframe上迭代,对于每个找到的条目,将条目附加到
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