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')