【发布时间】:2020-02-21 14:50:42
【问题描述】:
人们经常通过 print(dataframe) 的输出在 Stack Overflow 上提问。如果有一种方法可以将数据帧数据快速加载到pandas.dataframe 对象中,那就很方便了。
从数据帧字符串(可能格式正确也可能不正确)加载数据帧的最建议方法是什么?
示例 1
如果您想将以下字符串作为数据框加载,您会怎么做?
# Dummy Data
s1 = """
Client NumberOfProducts ID
A 1 2
A 5 1
B 1 2
B 6 1
C 9 1
"""
示例 2
这种类型更类似于您在csv 文件中找到的类型。
# Dummy Data
s2 = """
Client, NumberOfProducts, ID
A, 1, 2
A, 5, 1
B, 1, 2
B, 6, 1
C, 9, 1
"""
预期输出
参考文献
注意:以下两个链接不涉及 Example-1 中提出的具体情况。我认为我的问题不是重复的原因是我认为无法使用已发布在这些链接上的任何解决方案(在撰写本文时)加载 Example-1 中的字符串。
Create Pandas DataFrame from a string。请注意,这里建议的
pd.read_csv(StringIO(s1), sep)并不真正适用于 Example-1。您会得到以下输出。
这个问题被标记为两个 Stack Overflow 链接的副本。其中之一是上述的,它未能解决 Example-1 中提出的情况。第二个是。在那里提供的所有答案中,只有一个看起来可能适用于 Example-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
【问题讨论】:
-
@yatu 我更喜欢使用你提到的方法 2,但是,它无法从 Example-1 正确加载数据。这就是为什么我打开了这个问题并留下了对类似问题的引用,但问题的内容却不一样。
-
第一次使用
df = pd.read_clipboard(sep='\s+')进行了测试,对我来说效果很好 -
我尝试了
pd.read_clipboard(sep='\s+')并得到与pd.read_clipboard(sep='\s\s+')相同的错误。我认为这是特定于系统配置的。 -
是的,我同意,看来问题出在您的 pc/nb 中的剪贴板。
-
好的。我担心的是,如果 marked-a-duplicate 这个问题将来会被删除。我刚刚检查了meta,看起来这不会发生。所以,我也没事。 meta.stackoverflow.com/questions/320522/…
标签: python string pandas dataframe