如何使用 Pandas read_clipboard 有效加载有关 Stack Overflow 问题的数据?

cs9*_*s95 3 python clipboard pandas

我注意到 Stack Overflow 上的很多 Pandas 问题只包含几行数据作为文本,没有随附的代码来生成/重现它。我知道 的存在read_clipboard,但我无法弄清楚如何在许多情况下有效地调用此函数来读取数据,例如标题名称中存在空格或列中的列表等 Python 对象时。

如何pd.read_clipboard更有效地读取以非常规格式粘贴的数据,这些格式不适合使用默认参数轻松阅读?是否有出现短缺的情况read_clipboard

cs9*_*s95 6

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)

      另请参阅使用 pd.read_clipboard 时如何处理包含空格的列名?.

  • 读取系列而不是 DataFrame

  • 使用自定义标题名称加载数据

  • 加载没有任何标题的数据

    • header=None
  • 设置一列或多列作为索引

    • 使用index_col=[...]带有适当的标签或索引
  • 解析日期

    • 使用parse_dates适当的格式。如果解析datetimes(即,日期由时间戳分隔的列),您可能还需要使用,sep=r'\s{2,}'同时确保您的列至少由两个空格分隔。

有关此处未涵盖的其他案例的论据的更全面列表,请参阅我的这个答案read_csv


注意事项

read_clipboard是瑞士军刀。然而,它