将Stackoverflow中发布的数据导入Python工作环境的最佳实践
假设在Stackoverflow中提出了一个问题,并给出了示例数据,那么导入示例数据的最佳方式是什么 为了解释我要问的这个问题,让我看一篇真正的文章 已给出以下数据来解决查询将Stackoverflow中发布的数据导入Python工作环境的最佳实践,python,Python,假设在Stackoverflow中提出了一个问题,并给出了示例数据,那么导入示例数据的最佳方式是什么 为了解释我要问的这个问题,让我看一篇真正的文章 已给出以下数据来解决查询 Access Type host/IP address Count 0 Authorized 206.196.21.129 23 1 Authorized 207.30.238.8 46 2 Authorized 208.62.55.75 23 3
Access Type host/IP address Count
0 Authorized 206.196.21.129 23
1 Authorized 207.30.238.8 46
2 Authorized 208.62.55.75 23
3 Authorized 216.12.111.241 23
4 Authorized 63.197.98.106 23
5 Authorized 67.95.49.172 23
6 Unauthorized 207.243.167.114 23
7 Unauthorized 209.152.168.249 10
8 Unauthorized 65.166.159.14 10
9 Unauthorized 68.143.156.89 10
现在,将数据导入Python的最佳方法是什么
该方法应该采用这样一种方式,即在一个步骤中将导入到python环境中
我知道,我可以将数据复制粘贴到电子表格->然后将其保存为CSV文件,然后将其导入Python。但我需要一种更优雅的方式
一位开发人员建议的其他解决方案
import pandas as pd ;
df = pd.read_clipboard()
pd.read_clipboard()不是所有操作系统的通用解决方案。在我的系统(Ubuntu19.10)中,我做了一个剪贴板复制,结果是这样的。列名被错误地导入
涉及R解决方案,但我对Python的解决方案感兴趣。编辑回答:这是稍微多一些的工作,但我认为这是另一个可行的选择
from io import StringIO
import pandas as pd
s = StringIO(""" Access Type host/IP address Count
0 Authorized 206.196.21.129 23
1 Authorized 207.30.238.8 46
2 Authorized 208.62.55.75 23
3 Authorized 216.12.111.241 23
4 Authorized 63.197.98.106 23
5 Authorized 67.95.49.172 23
6 Unauthorized 207.243.167.114 23
7 Unauthorized 209.152.168.249 10
8 Unauthorized 65.166.159.14 10
9 Unauthorized 68.143.156.89 10""")
df = pd.read_fwf(s,index_col=0,infer_nrows=10)
结果:
In [175]: df
Out[175]:
Access Type host/IP address Count
0 Authorized 206.196.21.129 23
1 Authorized 207.30.238.8 46
2 Authorized 208.62.55.75 23
3 Authorized 216.12.111.241 23
4 Authorized 63.197.98.106 23
5 Authorized 67.95.49.172 23
6 Unauthorized 207.243.167.114 23
7 Unauthorized 209.152.168.249 10
8 Unauthorized 65.166.159.14 10
9 Unauthorized 68.143.156.89 10
尝试使用pandas函数读取剪贴板() 此方法非常简单:它读取复制粘贴的表格数据并将其解析为数据帧 通过此方法从剪贴板读取文本并传递到read_csv 您可以在中找到更多信息 编辑:
我认为您的问题不是由操作系统引起的,可能是因为数据第一行中有空格。正如其他人所指出的,最好的解决方案似乎是
pd.read_clipboard()
为了不弄乱列,只需将列名中的空格替换为。
,然后只需执行以下操作即可获得实际列:
df.columns=[name.replace(“”,“”)作为df.columns.values中的名称]
因此,当您用替换空格时,请复制输入:
输入:
运行代码:
将熊猫作为pd导入
df=pd.read_剪贴板()
df.columns=[name.replace(“”,“”)表示df.columns.values中的名称]
您将得到:
输出:
Access Type host/IP address Count
0 Authorized 206.196.21.129 23
1 Authorized 207.30.238.8 46
2 Authorized 208.62.55.75 23
3 Authorized 216.12.111.241 23
4 Authorized 63.197.98.106 23
5 Authorized 67.95.49.172 23
6 Unauthorized 207.243.167.114 23
7 Unauthorized 209.152.168.249 10
8 Unauthorized 65.166.159.14 10
9 Unauthorized 68.143.156.89 10
然后您会发现第一列“访问类型”被分成两列,“主机/IP地址”也被分成两列……这可能比read_clipboard()更有效,因为这将提供对导入的强大控制。我们还可以在单击“回车”按钮之前轻松更正列名。老实说,原始帖子应该以机器可读的格式添加数据,例如CSV,而不是通过打印数据框获得的人类可读的表格输出。你是对的。有时最好以CSV文件的形式提供。但CSV文件有时也会带来发送隐藏为CSV的恶意文件的风险。因此,发布一小部分数据(目前的做法)似乎更透明。我的意思是在帖子中粘贴CSV格式的摘录,而不是附件。在大多数情况下,这似乎效果不错。谢谢@丽卡
Access Type host/IP address Count
0 Authorized 206.196.21.129 23
1 Authorized 207.30.238.8 46
2 Authorized 208.62.55.75 23
3 Authorized 216.12.111.241 23
4 Authorized 63.197.98.106 23
5 Authorized 67.95.49.172 23
6 Unauthorized 207.243.167.114 23
7 Unauthorized 209.152.168.249 10
8 Unauthorized 65.166.159.14 10
9 Unauthorized 68.143.156.89 10