cs9*_*s95 3 python clipboard pandas
我注意到 Stack Overflow 上的很多 Pandas 问题只包含几行数据作为文本,没有随附的代码来生成/重现它。我知道 的存在read_clipboard,但我无法弄清楚如何在许多情况下有效地调用此函数来读取数据,例如标题名称中存在空格或列中的列表等 Python 对象时。
如何pd.read_clipboard更有效地读取以非常规格式粘贴的数据,这些格式不适合使用默认参数轻松阅读?是否有出现短缺的情况read_clipboard?
read_clipboard:初学者指南read_clipboard对于任何开始回答Pandas 标签中的问题的人来说,这确实是一种可取之处。不幸的是,pandas 老手也知道,由于发布数据格式的各种复杂性,问题中提供的数据并不总是很容易进入终端。
值得庆幸的是,read_clipboard有参数可以处理大多数这些情况(并且很容易)。以下是一些常见的用例及其相应的参数。
read_clipboard使用read_csv以空格分隔的引擎盖下,所以很多的技术从CSV数据解析适用于此,如
解析数据中带有空格的列
sep与正则表达式参数一起使用。首先,确保列之间至少有两个空格,并且列数据本身内最多有一个连续的空格。然后你可以使用sep=r'\s{2,}'这意味着“通过查找至少两个连续的空格作为分隔符来分隔列”(注意:engine='python'多字符或正则表达式分隔符需要):
df = pd.read_clipboard(..., sep=r'\s{2,}', engine='python')
Run Code Online (Sandbox Code Playgroud)
读取系列而不是 DataFrame
使用squeeze=true,header=None如果第一行也是数据,您可能还需要。
s = pd.read_clipboard(..., header=None, squeeze=True)
Run Code Online (Sandbox Code Playgroud)
使用自定义标题名称加载数据
使用names=[...]与结合header=None并skiprows=[0]忽略现有报头。
df = pd.read_clipboard(..., header=None, names=['a', 'b', 'c'], skiprows=[0])
Run Code Online (Sandbox Code Playgroud)
加载没有任何标题的数据
header=None设置一列或多列作为索引
index_col=[...]带有适当的标签或索引解析日期
parse_dates适当的格式。如果解析datetimes(即,日期由时间戳分隔的列),您可能还需要使用,sep=r'\s{2,}'同时确保您的列至少由两个空格分隔。有关此处未涵盖的其他案例的论据的更全面列表,请参阅我的这个答案read_csv。
read_clipboard是瑞士军刀。然而,它
无法以漂亮的/表格格式读取数据(IOW,边框使它更难)
除非指定了索引中的所有元素,否则无法正确解析 MultIndexes。
无法忽略/处理数据中的省略号
不能将列表(或其他对象)的列解析为字符串以外的任何内容。这些列需要单独转换,如如何使用 pd.read_clipboard 在带有列表的数据帧中读取?.
无法从图像中读取文本(因此请不要使用图像作为与他人共享数据的方式!)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |