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

2024-06-28 20:56:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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]
})

我想将数据帧row values连接成一个具有一致padding的数据帧

我尝试了下面的代码

df.dot(df.columns +' | ')

|用额外的spaces before and after符号

我得到的是

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

注意|符号中的对齐

如何修改代码以添加额外的变量填充空间^首选{}或numpy溶液


Tags: 数据代码dataframedfobject符号rowpd
2条回答
g=df.gt(0).columns*df
g.agg(set,1).map(list).str.join('|').str.strip('\w')

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

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

相关问题 更多 >