Python 将数据帧行值连接为具有一致填充的行

Python 将数据帧行值连接为具有一致填充的行,python,pandas,numpy,Python,Pandas,Numpy,我有一个dataframe如下 +---+----+---+----+----+-----+------+ | X | XX | Y | YY | ZZ | ZZZ | ZZZZ | +---+----+---+----+----+-----+------+ | 0 | 1 | 1 | 0 | 0 | 1 | 0 | +---+----+---+----+----+-----+------+ | 1 | 0 | 0 | 1 | 0 | 0 | 1 | +---+-

我有一个
dataframe
如下

+---+----+---+----+----+-----+------+
| X | XX | Y | YY | ZZ | ZZZ | ZZZZ |
+---+----+---+----+----+-----+------+
| 0 |  1 | 1 |  0 |  0 |  1  |   0  |
+---+----+---+----+----+-----+------+
| 1 |  0 | 0 |  1 |  0 |  0  |   1  |
+---+----+---+----+----+-----+------+
| 0 |  1 | 0 |  0 |  1 |  0  |   0  |
+---+----+---+----+----+-----+------+
| 0 |  0 | 1 |  0 |  0 |  0  |   0  |
+---+----+---+----+----+-----+------+

df = pd.DataFrame({
    'X':[0,1,0,0],
    'XX':[1,0,1,0],
    'Y':[1,0,0,1],
    'YY':[0,1,0,0],
    'ZZ':[0,0,1,0],
    'ZZZ':[1,0,0,0],
    'ZZZZ':[0,1,0,0]
})
我想将数据帧
行值
连接成一个具有一致
填充
的值

我尝试了下面的代码

df.dot(df.columns +' | ')
|
在前后加上额外的
空格

我得到的是

0     XX | Y | ZZZ |
1    X | YY | ZZZZ |
2          XX | ZZ |
3                Y |
dtype: object
但是,我期望得到的是

0      XX |  Y |  ZZZ |
1       X | YY | ZZZZ |
2           XX |   ZZ |
3                   Y |
        dtype: object
注意
|
符号中的对齐


如何修改代码以添加额外的变量填充空间
pandas
numpy
首选解决方案。

一个想法是通过列名称中字符串的最大长度为常量
填充添加空间:

print (df.columns.str.len().max())
4

df = df.dot(df.columns.str.rjust(df.columns.str.len().max(), ' ') +' | ')
#working like
#df = df.dot(df.columns.str.rjust(4, ' ') +' | ')
print (df)
0      XX |    Y |  ZZZ | 
1       X |   YY | ZZZZ | 
2             XX |   ZZ | 
3                     Y | 
dtype: object

所以
4
中的
rjust(4',)
方法指的是最大字符数?在本例中,
ZZZZ
4
?@Tommy-没错。有一个错误<代码>无法使用以下索引类型执行_mul _;。索引
。无论如何,我喜欢@jezrael answers。这只是对我现有代码的简单调整。谢谢@汤米,祝你一切顺利。快乐编码
g=df.gt(0).columns*df
g.agg(set,1).map(list).str.join('|').str.strip('\w')