假设我有一个列表列表,如下所示:
输入:
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('!')