您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Pandas DataFrame的字符串中漂亮地打印换行符

在Pandas DataFrame的字符串中漂亮地打印换行符

从pandas.DataFrame文档中

具有标注轴(行和列)的二维大小可变的,可能是异构的表格数据结构。算术运算在行和列标签上对齐。可以认为是Series对象的类似dict的容器。大熊猫主要数据结构

因此,没有索引就不能有一行。换行符“ \ n”在DataFrame中不起作用。

您可以用空值覆盖“ pos”,然后在下一行输出一个“ bidder”。但是,每次这样做时,index和’pos’都会被抵消。喜欢:

  pos    bidder
0   1          
1   2          
2   3  <- alice
3        <- bob
4   5

因此,如果一个名为“ frank”的竞标者的价值为4,它将覆盖“ bob”。当您添加更多时,这会引起问题。可能可以使用DataFrame并编写代码解决此问题,但可能值得研究其他解决方案。

这是产生上面输出结构的代码

import pandas as pd

n = 5
output = pd.DataFrame({'pos': range(1, n + 1),
                      'bidder': [''] * n},
                      columns=['pos', 'bidder'])
bids = {'alice': 3, 'bob': 3}
used_pos = []
for bidder, pos in bids.items():
    if pos in used_pos:
        output.ix[pos, 'bidder'] = "<- %s" % bidder
        output.ix[pos, 'pos'] = ''
    else:
        output.ix[pos - 1, 'bidder'] = "<- %s" % bidder
        used_pos.append(pos)
print(output)

编辑:

一个选择是重组数据和输出。您可以将pos作为列,并为数据中的每个键/人创建一个新行。在下面的代码示例中,它打印出NaN值替换为空字符串的DataFrame。

import pandas as pd

data = {'johnny\nnewline': 2, 'alice': 3, 'bob': 3,
        'frank': 4, 'lisa': 1, 'tom': 8}
n = range(1, max(data.values()) + 1)

# Create DataFrame with columns = pos
output = pd.DataFrame(columns=n, index=[])

# Populate DataFrame with rows
for index, (bidder, pos) in enumerate(data.items()):
    output.loc[index, pos] = bidder

# Print the DataFrame and remove NaN to make it easier to read.
print(output.fillna(''))

# Fetch and print every element in column 2
for index in range(1, 5):
    print(output.loc[index, 2])

但是,这取决于您要如何处理数据。祝好运 :)

其他 2022/1/1 18:33:33 有267人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶