为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2022-06-28 10:29:14
原始数据框:a1 a2 a3 a4 a5 a6b1 b2 b3 b4 b5 b6新数据框:a1 a2 a3 a4 a5 a6(第 1 个空行)(第 2 个空行)...(第 24 个空行)b1 b2 b3 b4 b5 b6(第一个空行)(第 2 个空行)...(第 24 个空行)问题是:如何进行上述转换?非常感谢。
查看完整描述

2 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

利用:


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


查看完整回答
反对 回复 2022-06-28
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

为了添加一个空行,您可以使用以下指令:


your_dataframe = your_dataframe.append({} , ignore_index=True)


要执行请求的转换,因为我不知道您的数据是如何形成的,也不知道它是如何被索引的,我建议您创建一个新的空数据框。


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


这是有关如何执行它的示例:


## Use your own data instead

data = [['a1', 'a2', 'a3', 'a4', 'a5', 'a6'],['b1', 'b2', 'b3', 'b4', 'b5', 'b6']]

### Load the data in the dataframe

df = pd.DataFrame(data)


## Create the empty dataframe

df2 = pd.DataFrame()


## Use the initial dataframe length to perform the row iteration

length = len(df.index)


## For each rows of the initial dataframe

for i in range(0, length):

    ## Append the current row to the new dataframe

    df2 = df2.append(df[i:i+1],ignore_index=True) 

    ## Adding 24 empty rows

    for j in range(0,25):

        df2 = df2.append({},ignore_index=True)

因此,如果您的初始数据框类似于:


    0   1   2   3   4   5

0  a1  a2  a3  a4  a5  a6

1  b1  b2  b3  b4  b5  b6

执行脚本后,它会输出:


      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

...

25  NaN  NaN  NaN  NaN  NaN  NaN

26   b1   b2   b3   b4   b5   b6

27  NaN  NaN  NaN  NaN  NaN  NaN

...

49  NaN  NaN  NaN  NaN  NaN  NaN

50  NaN  NaN  NaN  NaN  NaN  NaN

51  NaN  NaN  NaN  NaN  NaN  NaN


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信