Python 在dataframe中的行之间添加特殊字符

Python 在dataframe中的行之间添加特殊字符,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有这样一个列表: df = pd.DataFrame(data = abc, columns = ['a','b','c']) a b c 1 2 3 4 5 6 7 8 9 输入: 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]] a b c 0 1 2 3 1 ! ! ! 2 4 5 6

假设我有这样一个列表:

df = pd.DataFrame(data = abc, columns = ['a','b','c'])
a   b   c
1   2   3
4   5   6
7   8   9
输入:

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]]
   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'])
a   b   c
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)
输出:

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

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

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

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
   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('!')
这里有一个方法:

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

更简单的方法是从现有数据帧创建一个新的数据帧,并将每个列设置为
。然后,附加到原始数据帧并按索引排序:

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

更简单的方法是从现有数据帧创建一个新的数据帧,并将每个列设置为
。然后,附加到原始数据帧并按索引排序:

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

你能解释一下为什么你认为这样的东西会有用吗?如果你想让数据框在shell中的格式不同,你可以查看prettytable、texttable、termtable或Table包。@DavidErickson这不是我的问题,所以我不能设置接受解决方案。试着问taliamycota@DavidErickson一切都好。无需道歉:)你能解释一下为什么你认为这样的东西会有用吗?如果你想让数据框在shell中的格式不同,你可以查看prettytable、texttable、termtable或Table包。@DavidErickson这不是我的问题,所以我无法设置接受解决方案。试着问taliamycota@DavidErickson一切都好。无需道歉:)