Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Stackoverflow中发布的数据导入Python工作环境的最佳实践_Python - Fatal编程技术网

将Stackoverflow中发布的数据导入Python工作环境的最佳实践

将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

假设在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   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