我有一个像这样的DataFrame:
0 1 2
0 0.0 1.0 2.0
1 NaN 1.0 2.0
2 NaN NaN 2.0
我想要得到的是
Out[116]:
0 1 2
0 0.0 1.0 2.0
1 1.0 2.0 NaN
2 2.0 NaN NaN
到目前为止,这是我的方法。
df.apply(lambda x : (x[x.notnull()].values.tolist()+x[x.isnull()].values.tolist()),1)
Out[117]:
0 1 2
0 0.0 1.0 2.0
1 1.0 2.0 NaN
2 2.0 NaN NaN
有没有有效的方法来实现这一目标?apply
这是减慢速度的方法。谢谢您的助手!:)
我的真实数据大小
df.shape
Out[117]: (54812040, 1522)
这是使用justify-的NumPy解决方案-
In [455]: df
Out[455]:
0 1 2
0 0.0 1.0 2.0
1 NaN 1.0 2.0
2 NaN NaN 2.0
In [456]: pd.DataFrame(justify(df.values, invalid_val=np.nan, axis=1, side='left'))
Out[456]:
0 1 2
0 0.0 1.0 2.0
1 1.0 2.0 NaN
2 2.0 NaN NaN
如果要节省内存,请改回分配-
df[:] = justify(df.values, invalid_val=np.nan, axis=1, side='left')
问题内容: 我正在尝试使用angular 2创建类似门户的功能,该功能将提供基本导航和全局服务(例如身份验证),但允许其他开发人员创建自己的模块,这些模块从根本上插入到门户中。 我正在使用angular- cli,并通过在项目内部创建的模块(请参见下面的树)进行了快速的概念验证,这些模块通过路由器(带有loadChildren)被延迟加载到app.module中。每个子模块都有自己的路由器,并且从
问题内容: 我需要将数组中的所有0移到数组的末尾。 示例:[1、10、0、5、7]应产生[1、10、5、7、0]。 我愿意进行反向循环或常规循环。 我 无法 创建一个新数组。 这是我到目前为止的内容: 谢谢! 问题答案: SIZE(n)其中n = arr.size,保留顺序: 创建一个与您要从中删除0的初始数组大小相同的数组。遍历原始数组,并将每个元素添加到新数组(如果它不为0)。遇到0时,对其进
问题内容: 如果他们不再需要我的网站上的用户,则在他们上载图像后,需要允许他们从服务器上删除它们的图像。我以前在PHP中使用该函数,但此后被告知这可能具有很高的风险和安全性。(下面的先前代码:) 相反,我现在只想将文件移动到其他文件夹中。他们必须先上传文件很长时间,然后才能登录帐户。如果我有存储用户图像的主文件夹: 然后在其中一个名为del的文件夹中放置不需要的图像: 是否有命令将文件移动到其他文
问题内容: 我需要获取一个字符串,并通过获取char来递归地重新排列它,并按该char的形式将字符串上的char移到末尾,例如“ Hello world!”。,’l’=>“ Heo word!lll”我在理解递归思维方式时遇到了问题,所以我从这里开始: 谢谢您的帮助 :) 问题答案: 递归是在内部重用方法的实践。在这种情况下,我将提供一个解决方案来解释发生的情况: 如果执行: 这将产生所需的结果:
问题内容: 我了解Redis会列出,设置和散列 每种类型的优点/缺点是什么,以及在列表上使用集合的地方,或在集合上使用哈希的例子,等等 问题答案: 您要考虑的主要问题是您将要对其进行哪种操作……这比性能要重要。因为,如果没有可用的操作,它将无法正常工作。 首先,查看Redis命令文档,并确保可以找到可用的命令集。我在这里使用的大多数推理在通用编程中也是如此。例如,为什么要在Python中使用字典而
问题内容: 所以我将double设置为1234,我想将小数点后移至12.34 因此,我将.1乘以1234两次,就像这样 这将打印结果 有没有一种方法,不用简单地将其格式化为两位小数,就可以正确地保存双重存储12.34? 问题答案: 如果使用或,则应使用舍入或期望看到一些舍入错误。如果你无法执行此操作,请使用。 你遇到的问题是0.1不是精确的表示形式,并且通过执行两次计算,你正在使该错误复杂化。 但