小编kei*_*fly的帖子

与 Polars 中 pandas 的“DataFrame.drop_duplicates()”等效的是什么?

drop_duplicates()来自极地的熊猫相当于什么?

\n
import polars as pl\ndf = pl.DataFrame({"a":[1,1,2], "b":[2,2,3], "c":[1,2,3]})\ndf\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
shape: (3, 3)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 a   \xe2\x94\x86 b   \xe2\x94\x86 c   \xe2\x94\x82\n\xe2\x94\x82 --- \xe2\x94\x86 --- \xe2\x94\x86 --- \xe2\x94\x82\n\xe2\x94\x82 i64 \xe2\x94\x86 i64 \xe2\x94\x86 i64 \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 1   \xe2\x94\x86 2   \xe2\x94\x86 1   \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1   \xe2\x94\x86 2   \xe2\x94\x86 2   \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xbc\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 2   \xe2\x94\x86 3   \xe2\x94\x86 3   \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n

代码:

\n
df.drop_duplicates(["a", "b"])\n
Run Code Online (Sandbox Code Playgroud)\n

产生以下错误:

\n

属性错误:未找到 drop_duplicates

\n

python unique duplicates python-polars

23
推荐指数
1
解决办法
2万
查看次数

将100个CSV文件与标题合并为一个的最快方法是什么?

使用以下设置将100个CSV文件与标题合并为一个的最快方法是什么:

  1. 文件总大小为200 MB.(缩小大小以使计算时间可见)
  2. 这些文件位于SSD上,最高速度为240 MB/s.
  3. CPU有4个内核,因此允许多线程和多个进程.
  4. 只存在一个节点(对Spark很重要)
  5. 可用内存为15 GB.因此文件很容易融入内存.
  6. 操作系统是Linux(Debian Jessie)
  7. 该计算机实际上是Google Cloud中的n1-standard-4实例.

(包含详细设置以使问题的范围更具体.更改是根据此处的反馈进行的)

文件1.csv:

a,b
1,2
Run Code Online (Sandbox Code Playgroud)

文件2.csv:

a,b
3,4
Run Code Online (Sandbox Code Playgroud)

最终out.csv:

a,b
1,2
3,4
Run Code Online (Sandbox Code Playgroud)

根据我的基准测试,所有提出的方法中最快的是纯python.有没有更快的方法?

基准(用评论和帖子中的方法更新):

Method                      Time
pure python                  0.298s
sed                          1.9s
awk                          2.5s
R data.table                 4.4s
R data.table with colClasses 4.4s
Spark 2                     40.2s
python pandas          1min 11.0s
Run Code Online (Sandbox Code Playgroud)

工具版本:

sed 4.2.2
awk: mawk 1.3.3 Nov 1996
Python 3.6.1
Pandas 0.20.1
R 3.4.0
data.table 1.10.4
Spark 2.1.1
Run Code Online (Sandbox Code Playgroud)

Jupyter笔记本中的代码:

SED:

%%time
!head temp/in/1.csv > temp/merged_sed.csv
!sed 1d temp/in/*.csv …
Run Code Online (Sandbox Code Playgroud)

python csv r

17
推荐指数
1
解决办法
2558
查看次数

如何使用Scala在Spark 2.1中将毫秒级字符串列转换为毫秒级时间戳?

我在Scala中使用Spark 2.1。

如何将以毫秒为单位的字符串列转换为以毫秒为单位的时间戳?

我从问题更好的方法中尝试了以下代码,将字符串字段转换为Spark中的时间戳

import org.apache.spark.sql.functions.unix_timestamp
val tdf = Seq((1L, "05/26/2016 01:01:01.601"), (2L, "#$@#@#")).toDF("id", "dts")
val tts = unix_timestamp($"dts", "MM/dd/yyyy HH:mm:ss.SSS").cast("timestamp")
tdf.withColumn("ts", tts).show(2, false)
Run Code Online (Sandbox Code Playgroud)

但是我得到的结果没有毫秒:

+---+-----------------------+---------------------+
|id |dts                    |ts                   |
+---+-----------------------+---------------------+
|1  |05/26/2016 01:01:01.601|2016-05-26 01:01:01.0|
|2  |#$@#@#                 |null                 |
+---+-----------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

datetime scala apache-spark

7
推荐指数
2
解决办法
8581
查看次数

如何按日期过滤极坐标数据框?

df.filter(pl.col("MyDate") >= "2020-01-01")
Run Code Online (Sandbox Code Playgroud)

不像 pandas 那样工作。

我找到了解决方法

df.filter(pl.col("MyDate") >= pl.datetime(2020,1,1))
Run Code Online (Sandbox Code Playgroud)

但如果我需要使用字符串变量,这并不能解决问题。

python python-polars

6
推荐指数
2
解决办法
9914
查看次数

在np.where子句之后,在pandas中无法识别NaN.为什么?或者这是一个错误?

在np.where子句之后,在pandas中无法识别NaN.为什么?或者这是一个错误?

这段代码的最后一行应该是"True"

In [1]: import pandas as pd
In [2]: import numpy as np   
In [3]: a=pd.Series([1,np.nan])    
In [4]: b=pd.DataFrame(["a","b"])  
In [5]: b["1"]=np.where(
            a.isnull(),
            np.nan,
            "Hello"
        )   
In [6]: b
Out[6]:
   0      1
0  a  Hello
1  b    nan    
In [7]: b[1].isnull()
Out[7]:
0    False
1    False
Name: 1, dtype: bool
Run Code Online (Sandbox Code Playgroud)

python numpy pandas

4
推荐指数
1
解决办法
4747
查看次数

使用 Dask pivot_table 后,我丢失了索引列

在将 pivot_table 用于 Dask Dataframe 并将数据保存到 Parquet 文件后,我丢失了索引列。

import dask.dataframe as dd
import pandas as pd

df=pd.DataFrame()
df["Index"]=[1,2,3,1,2,3]
df["Field"]=["A","A","A","B","B","B"]
df["Value"]=[10,20,30,100,120,130]
df
Run Code Online (Sandbox Code Playgroud)

我的数据框:

   Index Field  Value
0      1     A     10
1      2     A     20
2      3     A     30
3      1     B    100
4      2     B    120
5      3     B    130
Run Code Online (Sandbox Code Playgroud)

达斯克代码:

ddf=dd.from_pandas(df,2)
ddf=ddf.categorize("Field")
ddf=ddf.pivot_table(values="Value", index="Index", columns="Field")
dd.to_parquet("1.parq",ddf)
dd.read_parquet("1.parq").compute()
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误:

ValueError: 存在多个可能的索引:['A', 'B']。请选择一个 index='index-name'

我可以选择 A 或 B 作为索引,但我缺少索引列。

我试过了dd.to_parquet("1.parq",ddf, write_index=True),但它给了我以下错误:

类型错误:无法将项目插入还不是现有类别的 CategoricalIndex

有人可以帮我将带有“索引”列的表保存到 Parquet 文件中吗?

PS:

ddf.pivot_table(values="Value", index="Index", columns="Field").compute() …

python dask

4
推荐指数
1
解决办法
3579
查看次数

如何将 Pandas 数据帧传递给分布式工作者?

我试图将一个大熊猫数据帧作为函数参数传递给分布式 dask 的工作人员。我尝试过的(X 是我的数据框):

1 将数据直接传递给函数:

def test(X):
    return X
f=client.submit(test, X)
f.result()
Run Code Online (Sandbox Code Playgroud)

2 在初始化函数中保存数据帧。

def worker_init(r_X):
    global X
    X=r_X
client.run(worker_init,X,y)
Run Code Online (Sandbox Code Playgroud)

3 将数据帧分散到所有节点,然后通过期货使用它

def test(X):
    return X
f_X = client.scatter(X, broadcast=True)
f = client.submit(test,f_X)
f.result()
Run Code Online (Sandbox Code Playgroud)

没有一个变体适用于我的情况。变体 1 和 2 的工作方式几乎相同。dask-scheduler 为每个任务增加内存,并且永远不会释放它,直到它耗尽内存并且任务失败。

变体 3 不起作用,因为我没有传递 Pandas 数据帧,而是得到了一些垃圾。

如何将数据帧发送给工作人员并且在调度程序上没有 MemoryError?

变体 3 的完整代码应该是内存高效的,但甚至不传递数据帧:

import pandas as pd
import numpy as np
from distributed import Client
client = Client('localhost:8786')
X = np.random.rand(10000,100)
X=pd.DataFrame(X)
f_X = client.scatter(X, broadcast=True)
def test(X):
    return X
f = …
Run Code Online (Sandbox Code Playgroud)

python distributed pandas dask

3
推荐指数
1
解决办法
1589
查看次数

如何在Python中将极地系列转换为熊猫系列?

如何在Python中将极地系列转换为熊猫系列?

我当前的解决方法是:

df = pl.DataFrame({"a":[1,1,2], "b":[2,2,3], "c":[1,2,3]})
df[["a"]].to_pandas()["a"]
Run Code Online (Sandbox Code Playgroud)

但是有没有办法直接从polls系列转到pandas系列呢?

我之所以需要这个是因为我将数据输入 statmodels.OLS 并希望使用变量名称而不是变量数字。当我直接从极坐标将数据输入 statmodels.OLS 时,出现以下错误:

unrecognized data structures: <class 'polars.internals.series.Series'> / <class 'polars.internals.frame.DataFrame'>
Run Code Online (Sandbox Code Playgroud)

python python-polars

2
推荐指数
1
解决办法
6490
查看次数

我是否需要运行我的AngularJS应用程序代码,或者如果我使用ng-app,它是否会被AngularJS调用?

我见过以下内容:

(function () {
    'use strict';

    // Module name is handy for logging
    var id = 'app';

    // Create the module and define its dependencies.
    var app = angular.module('app', [
    ]);

    app.run(['$q', '$rootScope',
        function ($q, $rootScope) {

        }]);
})();
Run Code Online (Sandbox Code Playgroud)

我也看过这个没有(function()...()

按照上面的方式做是否有任何优势?

javascript angularjs

0
推荐指数
1
解决办法
286
查看次数