如何使用 to_clipboard() 提供 DataFrame 的可复制副本
- 2024-11-19 08:39:00
- admin 原创
- 10
问题描述:
2018-09-18_reproducible_dataframe.ipynb
该问题之前被标记为“如何制作良好的可重复熊猫示例”的重复。
如果您需要制作合成(虚假)数据来共享,请回答该问题。
其他问题和相关答案涵盖如何创建可重现的数据框。
他们没有介绍如何复制现有的数据框
.to_clipboard
,而这个问题专门介绍了.to_clipboard
。
这似乎是一个显而易见的问题。然而,许多询问有关 Pandas 问题的用户都是新手,缺乏经验。
提出问题的一个关键部分是如何创建一个最小、完整和可验证的示例,它解释“什么”和“为什么”,但没有解释“如何”。
例如,作为OP,我可能有以下数据框:
对于这个例子,我创建了合成数据,这是一个创建可重现数据集的选项,但不属于这个问题的范围。
想想看,就好像您加载了一个文件,并且只需要共享其中的一点,就可以重现错误。
import pandas as pd
import numpy as np
from datetime import datetime
from string import ascii_lowercase as al
np.random.seed(365)
rows = 15
cols = 2
data = np.random.randint(0, 10, size=(rows, cols))
index = pd.bdate_range(datetime.today(), freq='d', periods=rows)
df = pd.DataFrame(data=data, index=index, columns=list(al[:cols]))
a b
2020-07-30 2 4
2020-07-31 1 5
2020-08-01 2 2
2020-08-02 9 8
2020-08-03 4 0
2020-08-04 3 3
2020-08-05 7 7
2020-08-06 7 0
2020-08-07 8 4
2020-08-08 3 2
2020-08-09 6 2
2020-08-10 6 8
2020-08-11 9 6
2020-08-12 1 6
2020-08-13 5 7
数据框后面可能会跟着其他代码,导致出现错误或无法产生预期结果
在 Stack Overflow 上提问时应提供的内容。
一个写得很好的连贯的问题 - 作为格式化的文本
产生错误的代码 -格式化文本
整个错误回溯 -格式化文本
可能的话,当前和预期的结果 - 作为格式化的文本,或图像(如果是情节)
数据以易于使用的形式呈现-格式化文本
请不要添加您的数据作为该问题的答案。
解决方案 1:
第一:请勿发布数据图像,请只发布文本
第二:不要将数据粘贴到评论部分或作为答案,而是编辑您的问题
如何快速从 pandas DataFrame 提供样本数据
回答这个问题的方法不止一种。但是,这个答案并不是一个详尽的解决方案。它提供了最简单的方法。
对于好奇的人,Stack Overflow 上还提供了其他更详细的解决方案。
提供可共享数据集的链接(可能在 GitHub 上或 Google 上的共享文件)。如果数据集很大并且目标是优化某种方法,那么这尤其有用。缺点是数据将来可能不再可用,这会降低帖子的益处。
问题中必须提供数据,但可以附带更广泛的数据集的链接。
不要仅发布数据的链接或图像。
提供输出
df.head(10).to_clipboard(sep=',', index=True)
代码:
提供输出pandas.DataFrame.to_clipboard
df.head(10).to_clipboard(sep=',', index=True)
如果您有一个多索引 DataFrame,请添加注释,说明哪些列是索引。
注意:执行上一行代码时,不会出现任何输出。
代码结果现在在剪贴板上。
将剪贴板粘贴到
code block
Stack Overflow 问题中
,a,b
2020-07-30,2,4
2020-07-31,1,5
2020-08-01,2,2
2020-08-02,9,8
2020-08-03,4,0
2020-08-04,3,3
2020-08-05,7,7
2020-08-06,7,0
2020-08-07,8,4
2020-08-08,3,2
尝试回答您的问题的人可以将其复制到剪贴板,然后执行以下操作:
df = pd.read_clipboard(sep=',')
数据框的其他位置.head(10)
.iloc
使用属性指定数据框的一部分以下示例选择第 3 - 11 行以及所有列
df.iloc[3:12, :].to_clipboard(sep=',')
其他参考资料pd.read_clipboard
使用 pd.read_clipboard 指定多级列?
使用 pd.read_clipboard 时如何处理带有空格的列名?
使用 pd.read_clipboard 复制数据框时如何处理自定义命名索引?
Google Colab 用户
.to_clipboard()
不起作用用于
.to_dict()
复制数据框
# if you have a datetime column, convert it to a str
df['date'] = df['date'].astype('str')
# if you have a datetime index, convert it to a str
df.index = df.index.astype('str')
# output to a dict
df.head(10).to_dict(orient='index')
# which will look like
{'2020-07-30': {'a': 2, 'b': 4},
'2020-07-31': {'a': 1, 'b': 5},
'2020-08-01': {'a': 2, 'b': 2},
'2020-08-02': {'a': 9, 'b': 8},
'2020-08-03': {'a': 4, 'b': 0},
'2020-08-04': {'a': 3, 'b': 3},
'2020-08-05': {'a': 7, 'b': 7},
'2020-08-06': {'a': 7, 'b': 0},
'2020-08-07': {'a': 8, 'b': 4},
'2020-08-08': {'a': 3, 'b': 2}}
# copy the previous dict and paste into a code block on SO
# the dict can be converted to a dataframe with
# df = pd.DataFrame.from_dict(d, orient='index') # d is the name of the dict
# convert datatime column or index back to datetime
如需更详尽的答案,请使用
.to_dict()
如何使用 df.to_dict() 轻松共享示例数据框
如何制作良好的可重复的熊猫示例
解决方案 2:
如果你执行类似操作print(df.head(20))
并将输出粘贴为代码格式,那么我们可以使用pd.read_clipboard()
它将数据加载到数据框中。这种方法适用于标签下发布的绝大多数问题pandas
,但对于涉及的问题则失败了multiindex
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件