我需要为我正在构建的推荐程序加载一个大的 .csv 文件(大约有 1000 万条记录)。我的输入文件如下所示(k 接近 ~400 列):
P1 P2 ... Pk
a 1 1 ... 0
b 0 0 ... 0
c 0 0 ... 1
Run Code Online (Sandbox Code Playgroud)
我尝试通过此调用读取我的文件:
pd.read_csv(url,header=0, sep="\t",index_col=0,encoding="utf-8")
Run Code Online (Sandbox Code Playgroud)
当我阅读文件时,Pandas错误地猜测我的数据中的所有数字都是 floats。我想强制数据为“int”类型,以便在加载过程中节省内存。我尝试使用选项:dtype=int,但这发出了一个错误:
ValueError: invalid literal for int() with base 10: 'a'
Run Code Online (Sandbox Code Playgroud)
我想这是因为我的索引和列是字符串。
我知道我可以尝试使用字典来手动指定列的数据类型,但是由于我正在构建一个推荐程序,因此我事先不知道我的文件的列和索引,我想避免重新 -每次加载新文件时创建字典。
如何指定read_csv方法只在我的表的数据上设置整数类型,而不是索引和列名?
如果尺寸匹配,则列表或numpy数组可以解包为多个变量。对于3xN阵列,将执行以下操作:
import numpy as np
a,b = [[1,2,3],[4,5,6]]
a,b = np.array([[1,2,3],[4,5,6]])
# result: a=[1,2,3], b=[4,5,6]
Run Code Online (Sandbox Code Playgroud)
如何对熊猫的柱子实现类似的行为DataFrame?扩展以上示例:
import pandas as pd
df = pd.DataFrame([[1,2,3],[4,5,6]])
df.columns = ['A','B','C'] # Rename cols and
df.index = ['i', 'ii'] # rows for clarity
Run Code Online (Sandbox Code Playgroud)
以下内容无法正常工作:
a,b = df.T
# result: a='i', b='ii'
a,b,c = df
# result: a='A', b='B', c='C'
Run Code Online (Sandbox Code Playgroud)
但是,我想得到的是以下内容:
a,b,c = unpack(df)
result: a=df['A'], b=df['B'], c=df['C']
Run Code Online (Sandbox Code Playgroud)
该功能unpack已经在熊猫中可用吗?还是可以通过简单的方式模仿它?
例如,我想为下面的矩阵计算列 'a' 和 'c' 的加权和,权重在字典中定义w。
df = pd.DataFrame({'a': [1,2,3],
'b': [10,20,30],
'c': [100,200,300],
'd': [1000,2000,3000]})
w = {'a': 1000., 'c': 10.}
Run Code Online (Sandbox Code Playgroud)
我自己想出了一些选项(见下文),但看起来都有些复杂。这个基本用例没有直接的熊猫操作吗?像df.wsum(w)什么?
我试过了pd.DataFrame.dot,但它引发了一个值错误:
df.dot(pd.Series(w))
# This raises an exception:
# "ValueError: matrices are not aligned"
Run Code Online (Sandbox Code Playgroud)
可以通过为每一列指定权重来避免异常,但这不是我想要的。
w = {'a': 1000., 'b': 0., 'c': 10., 'd': 0. }
df.dot(pd.Series(w)) # This works
Run Code Online (Sandbox Code Playgroud)
如何仅计算列子集上的点积?或者,可以在应用点操作之前选择感兴趣的列,或者利用 pandas/numpynan在计算(按行)总和时忽略s的事实(见下文)。
以下是我自己发现的三种方法:
w = {'a': 1000., 'c': 10.}
# 1) Create a complete lookup W.
W = { …Run Code Online (Sandbox Code Playgroud) 嗨stackoverflowers :)
如果我构建一个Qt/qmake示例项目(在我的情况下是" 模拟时钟 "示例)并将其部署到运行iOS 7.1的设备上,一切顺利:应用程序在设备上执行完美.Chapeau - 来自digia的人们做了一项艰巨的工作,将ios工具链集成到他们的Qt工作流程中.
但是,如果我将qmake项目翻译成CMake项目,事情就不会那么顺利了.我已经附加了Qt-5.3.1版本的模拟时钟示例(见下文),其中我添加了一个CMakeLists.txt和一个运行CMake的脚本来生成iOS的XCode项目.该项目编译甚至链接(我不得不添加一些额外的链接库,请参阅CMake源文件).好极了.
但这是陷阱:应用程序在运行时崩溃,并显示以下错误消息:
错误:无法加载平台插件"ios"
作为该线程中的注释,必须通过项目设置"强制加载"libqios.这样做并没有太多改善情况,只是将错误消息更改为:
错误:您在调用UIApplicationMain之前创建了QApplication.如果您正在编写本机iOS应用程序,并且只想将Qt用于应用程序的某些部分,那么创建QApplication的好地方是来自UIApplication委托内的"applicationDidFinishLaunching".
我有两个问题:
这是包含我的Qt-CMake项目的zip文件的链接.我正在使用的Qt版本是适用于iOS的Qt-5.3.1.
编辑:我发现qmake示例如果你将其从Qt示例文件夹结构中删除,就不会像这样工作.直接查看Qt示例:path/to/Qt/examples/widgets/widgets/analogclock.
有没有一种强大的方法来规范化CMake中的路径?
例:
# Let's assume that an environment variable MY_ROOT_DIR is set
# that points to some directory.
set(MYFILE "$ENV{MY_ROOT_DIR}/somefile.txt")
message(${MYFILE})
# This will result for example in
# Win: C:\path\to\my\root\dir/somefile.txt
# Unix based: /path/to/my/root/dir/somefile.txt
Run Code Online (Sandbox Code Playgroud)
在此示例中,在将MY_ROOT_DIR其用作路径组件之前,需要对其进行规范化(即用斜杠替换反斜杠).你会如何在CMake中做到这一点?
CMake(或工具链下方的工具)可以处理具有混合分隔符(/或\)的路径,或者可以不处理.CMake /用作标准分隔符.CMake为具有错误路径分隔符的路径生成的典型警告\可能类似于:
CMake Warning (dev) at cmake_install.cmake:5 (set):
Syntax error in cmake code at
C:/path/to/my/root/build/cmake_install.cmake:5
when parsing string
C:\path\to\my\root/somefile.txt
Invalid escape sequence \p
Policy CMP0010 is not set: Bad variable reference syntax is an error. …Run Code Online (Sandbox Code Playgroud) 在 MacOS (10.11.6) 上使用 pip 搜索或安装软件包时,我收到类似于下面重现的错误的 SSL 错误。
python2和python3都会出现这个问题。我通过www.python.org作为 Frameworks获得了版本(2.7.14 和 3.6.5)。pip 的版本是 9.0.1。这个问题是新的(2018 年 4 月),似乎与 OSX 的更新有关。
如何从这个问题中恢复?
$ pip2 search numpy
Exception:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/commands/search.py", line 45, in run
pypi_hits = self.search(query, options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip/commands/search.py", line 62, in search
hits = pypi.search({'name': query, 'summary': query}, 'or')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1243, in __call__
return self.__send(self.__name, args)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1602, in __request …Run Code Online (Sandbox Code Playgroud) 让我们给出一个带有多级头的表:
cols = pd.MultiIndex.from_arrays([['a','a', 'b','b'], [0,1,0,1]],
names=('I','II'))
df = pd.DataFrame(np.random.rand(3,4),columns=cols)
df.index.name = 'idx'
I a b
II 0 1 0 1
idx
0 0.851031 0.294414 0.503343 0.081551
1 0.333798 0.965863 0.206981 0.898823
2 0.520647 0.868081 0.571291 0.275164
Run Code Online (Sandbox Code Playgroud)
如何将第一列索引"转动" I到行索引中?继续我的例子,我想实现以下目标:
II 0 1
I idx
a 0 0.851031 0.294414
1 0.333798 0.965863
2 0.520647 0.868081
b 0 0.503343 0.081551
1 0.206981 0.898823
2 0.571291 0.275164
Run Code Online (Sandbox Code Playgroud)
确保柱具有适合这种操作的形状.
例如,我有一个包含 3 个元素的数组
int array [] = {1, 4, 66};
Run Code Online (Sandbox Code Playgroud)
我怎么知道array包含多少个元素?