如何修改Python Pandas代码以实现指定的行/列输出格式?
如何修改Python Pandas代码实现期望的输出格式?
你的问题出在原代码对Pandas DataFrame的构造逻辑上——你把每个单键值对的字典当成了一行数据,导致Pandas自动把每个IP作为列名,每行只有对应列有值,其他列自然就填充成NaN了。要得到你想要的每行对应一个IP和数值的格式,有两种简单的修改方式:
方案1:直接遍历打印(无需Pandas也能实现)
如果只是需要输出指定格式的文本,完全可以不用Pandas,直接遍历你的字典列表打印每个键值对:
table = [{'192.168.70.150': '30'}, {'192.168.72.15': '38'}, {'192.168.72.150': '29'}] for item in table: # 每个字典只有一个键值对,直接取出打印 ip, value = next(iter(item.items())) print(f"{ip} {value}")
运行这段代码就能直接得到你要的输出:
192.168.70.150 30
192.168.72.15 38
192.168.72.150 29
方案2:用Pandas构造正确的DataFrame输出
如果你后续还要用Pandas处理这些数据,可以先把原始数据转换成(IP, 数值)的元组列表,再构造DataFrame,最后调整打印格式:
import pandas as pd table = [{'192.168.70.150': '30'}, {'192.168.72.15': '38'}, {'192.168.72.150': '29'}] # 把每个字典转换成(IP, 值)的元组 formatted_data = [(next(iter(item.keys())), next(iter(item.values()))) for item in table] # 创建指定列名的DataFrame df = pd.DataFrame(formatted_data, columns=['IP', 'Value']) # 打印时去掉索引,设置列间距让输出更整齐 print(df.to_string(index=False, col_space=[18, 5]))
这段代码的输出和你期望的格式一致,同时保留了Pandas数据结构的便利性。
内容的提问来源于stack exchange,提问作者rares balta
相关产品推荐
相关产品推荐

