我有一个Pandas数据框,其中一列包含字符串元素,这些字符串元素包含我想逐字打印的新行.但它们在输出中显示为\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

我怎样才能实现我想要的?我可以使用DataFrame吗,还是必须恢复为一次一行手动打印填充列?

以下是我目前掌握的情况:

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)

推荐答案

来自Pandas .数据帧documention:

二维大小可变、潜在异构的表格数据

所以你不能没有索引就有一行.换行符"\n"在数据帧中不起作用.

您可以用空值覆盖"pos",并在下一行输出下一个"bidder".但每次这样做时,索引和"pos"都会被抵消.比如:

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

因此,如果一个名为"frank"的投标人的值为4,它将覆盖"bob".这会在添加更多内容时引发问题.可能可以使用DataFrame和编写代码来解决这个问题,但可能值得研究其他解决方案.

下面是生成上述输出 struct 的代码.

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)

Edit:

数据和输出的另一个 Select 是重组.你可以

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

但这取决于你想对数据做什么.祝你好运:)

Python-3.x相关问答推荐

Django 5.0.2和django_rest_framework

在多个测试中维护和报告变量

我用Kivy创建的应用程序在安卓系统上运行时出错.(attributeerror:';class';对象没有属性';_javaclass__cls_storage';)

为什么 get_form 方法中小部件的更改没有反映 Django 管理站点中的更改

如何获取实例化 `types.GenericAlias` 的下标类?

基于Pandas列动态创建分箱,以使观测值数量或计数占总计数的1%.

找到在指定列的另一个分组中存在重复的行.

TypeError: issubclass() arg 1 在 Flask 中导入 langchain 时必须是一个类

python 分代垃圾收集:get_count 没有报告正确的对象创建数?

在新数据帧上自动提取两个字符串 python 之间的相等性

使用 Python 在特定组的列中设置上限

Python 3 `str.__getitem__` 的计算复杂度是多少?

Python:pprint的模块错误,打印没有错误

如何使用pandas python获取数据框中每列的最大长度

pandas 中 df.reindex() 和 df.set_index() 方法的区别

Python中的多行日志(log)记录

ImportError:无法在 PyQt5 中导入名称QStringList

使用 Tensorflow 2.0 在 MNIST 上实现自定义神经网络?

如何遍历某些扩展名的文件?

在 macbook pro M1 上安装 Tensorflow 时出现zsh:非法硬件指令 python