我有一个Pandas数据框,其中一列包含string元素,而那些string元素包含我想逐字打印的新行。但它们只是作为\n
出现在输出中。
也就是说,我想打印这个:
pos bidder
0 1
1 2
2 3 <- alice
<- bob
3 4
但我得到的是:
pos bidder
0 1
1 2
2 3 <- alice\n<- bob
3 4
我怎样才能实现我想要的?我可以使用数据帧,还是必须恢复为一次手动打印一行填充列?
以下是我目前掌握的情况:
n = 4
output = pd.DataFrame({
'pos': range(1, n+1),
'bidder': [''] * n
})
bids = {'alice': 3, 'bob': 3}
used_pos = []
for bidder, pos in bids.items():
if pos in used_pos:
arrow = output.ix[pos, 'bidder']
output.ix[pos, 'bidder'] = arrow + "\n<- %s" % bidder
else:
output.ix[pos, 'bidder'] = "<- %s" % bidder
print(output)
如果你想在ipython笔记本上这样做,你可以:
使用pandas
.set_properties()
和CSSwhite-space
属性[用于IPython笔记本电脑]
另一种方法是使用pandas的pandas.io.formats.style.Styler.set_properties()方法和CSS ^{} 属性:
要保持文本左对齐,您可能需要添加
'text-align': 'left'
,如下所示:来自pandas.DataFramedocumention:
所以没有索引就不能有行。换行符“\n”在数据帧中不起作用。
您可以用空值覆盖'pos',并在下一行输出下一个'bidder'。但每次这样做时,索引和“pos”都会被抵消。比如:
因此,如果一个名为“frank”的竞拍者的值是4,那么它将覆盖“bob”。这会导致问题,因为你添加更多。也许可以使用DataFrame和编写代码来解决这个问题,但可能值得研究其他解决方案。
下面是生成上述输出结构的代码。
编辑:
另一个选择是重组数据和输出。你可以 将pos作为列,并为每个键/人创建一个新行 在数据中。在下面的代码示例中,它用NaN打印数据帧 值替换为空字符串。
但这取决于你想对数据做什么。祝你好运:)
相关问题 更多 >
编程相关推荐