在数据帧中的行之间添加特殊字符



假设我有一个列表列表,如下所示:

输入:

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
abc = [a,b,c]
abc

输出:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我把它转换成这样的数据帧:

df = pd.DataFrame(data = abc, columns = ['a','b','c'])

要获得这样的表格:

a   b   c
1   2   3
4   5   6
7   8   9

我该如何在每个列表(所以每行(之间放置一个特殊字符(如!或#(?

我想要的是:

a   b   c
1   2   3
!   !   !
4   5   6
!   !   ! 
7   8   9

如果您的索引是默认的范围索引,那么您可以使用类似np.linspace.的东西

df.reindex(np.linspace(0,df.index.max(),df.index.max()*2+1)).fillna('!').reset_index(drop=True)

输出:

a  b  c
0  1  2  3
1  !  !  !
2  4  5  6
3  !  !  !
4  7  8  9

更多的是一种蛮力方法,但理解起来很简单,就是从现有数据帧创建一个新的数据帧,并将每列设置为!。然后,附加到原始数据帧并按索引进行排序:

df1 = df.copy()
for col in df1.columns: df1[col] = '!'
df.append(df1).sort_index().iloc[:-1]
Out[1]: 
a  b  c
0  1  2  3
0  !  !  !
1  4  5  6
1  !  !  !
2  7  8  9

如果你想要一个没有重复值的新索引,你也可以这样做:

df.append(df1).sort_index().reset_index(drop=True).iloc[:-1]
a   b   c
0   1   2   3
1   !   !   !
2   4   5   6
3   !   !   !
4   7   8   9

这里有一种方法:

df = pd.DataFrame(data = abc, columns = ['a','b','c'],index=range(0,len(abc)*2,2))
df = df.reindex(range(len(abc)*2)).fillna('!')

最新更新