drop_duplicates()来自极地的熊猫相当于什么?
import polars as pl\ndf = pl.DataFrame({"a":[1,1,2], "b":[2,2,3], "c":[1,2,3]})\ndf\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nshape: (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\nRun Code Online (Sandbox Code Playgroud)\n代码:
\ndf.drop_duplicates(["a", "b"])\nRun Code Online (Sandbox Code Playgroud)\n产生以下错误:
\n属性错误:未找到 drop_duplicates
\n使用以下设置将100个CSV文件与标题合并为一个的最快方法是什么:
(包含详细设置以使问题的范围更具体.更改是根据此处的反馈进行的)
文件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) 我在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) 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)
但如果我需要使用字符串变量,这并不能解决问题。
在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) 在将 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() …
我试图将一个大熊猫数据帧作为函数参数传递给分布式 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中将极地系列转换为熊猫系列?
我当前的解决方法是:
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) 我见过以下内容:
(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()...()
按照上面的方式做是否有任何优势?
python ×7
dask ×2
pandas ×2
angularjs ×1
apache-spark ×1
csv ×1
datetime ×1
distributed ×1
duplicates ×1
javascript ×1
numpy ×1
r ×1
scala ×1
unique ×1