当前位置: 首页 > 知识库问答 >
问题:

如何从打印的数据帧字符串加载数据帧?[重复]

阎建华
2023-03-14

通常,人们会在打印输出(数据帧)时询问堆栈溢出问题。如果有一种方法可以将数据帧数据快速加载到pandas.dataframe对象中,那么这是很方便的。

从数据帧字符串(可能格式正确,也可能格式不正确)加载数据帧的最有建议的方法是什么?

如果要将以下字符串作为数据帧加载,您会怎么做?

# Dummy Data
s1 = """
Client NumberOfProducts ID
A      1                2
A      5                1
B      1                2
B      6                1
C      9                1
"""

此类型与您在csv文件中找到的更相似。

# Dummy Data
s2 = """
Client, NumberOfProducts, ID
 A, 1, 2
 A, 5, 1
 B, 1, 2
 B, 6, 1
 C, 9, 1
"""

注意:以下两个链接不涉及示例-1中提出的具体情况。我认为我的问题不是重复的原因是,我认为不能使用已经发布在这些链接上的任何解决方案加载示例1中的字符串(在撰写本文时)。

此问题被标记为两个堆栈溢出链接的副本。其中之一就是上面的一个,它无法解决示例1中所示的情况。第二个是。在这里给出的所有答案中,只有一个看起来可能有效,例如-1,但它不起作用。

# could not read the clipboard and threw error
pd.read_clipboard(sep='\s\s+')

抛出错误:

PyperclipException: 
    Pyperclip could not find a copy/paste mechanism for your system.
    For more information, please visit https://pyperclip.readthedocs.org

共有1个答案

鲍健柏
2023-03-14

我可以提出两种方法来解决这个问题。

使用regexnumpy处理字符串以生成数据帧。我所看到的是,这在大多数情况下都有效。这将适用于“示例1”中介绍的情况。

# Make Dataframe
import pandas as pd
import numpy as np
import re

# Make Dataframe
# s = s1
ncols = 3 # number_of_columns
ss = re.sub('\s+',',',s.strip())
sa = np.array(ss.split(',')).reshape(-1,ncols)
df = pd.DataFrame(dict((k,v) for k,v in zip(sa[0,:], sa[1:,].T)))
df

使用io.StringIO馈送到pandas.read\u csv()。但如果分隔符定义得很好,这将起作用。例如,如果您的数据看起来类似于“示例2”。来源信贷

import pandas as pd
from io import StringIO

# Make Dataframe
# s = s2
df = pd.read_csv(StringIO(s), sep=',')
 类似资料:
  • 问题内容: 我对熊猫和matplotlib还不熟悉。无法获取对 绘制模式如下的“DataFrame” 喜欢画三维图形w.r.t.x,y和z 这是我使用的示例代码 I am getting a empty graph plot. definitely missing something. Any pointers? -Thx Request-1: Print df Result of top 10

  • 我有一个pandas数据帧,如下所示: 我希望将第0行添加到数据帧的末尾,并获得如下所示的新数据帧: 我在熊猫身上能做什么来做到这一点?

  • 我想转换一个组织。阿帕奇。火花sql。数据框到组织。阿帕奇。火花rdd。RDD[(字符串,字符串)]在数据块中。有人能帮忙吗? 背景(也欢迎使用更好的解决方案):我有一个Kafka流,它(经过一些步骤)变成了2列数据帧。我想将其放入Redis缓存,第一列作为键,第二列作为值。 更具体地说,输入的类型是:。我尝试将以下内容放入Redis: 错误消息如下所示: 我已经尝试过一些想法(比如函数、rdd)

  • 字典的键是日期,值是一个长度不同的列表 例如,字典是 我想要的是像这样的数据帧

  • 如何使用Spark-Scala连接日期和时间列(两个字符串)

  • 我有一个如下所示的数据帧: 我需要提取lat=30.75和lon 76.25的行,对于我使用的行: 但这表明了这个错误: