我想知道df中所有不在df1中的项目,df1中的项目,但df中没有
df =sc.parallelize([1,2,3,4 ,5 ,6,7,8,9])
df1=sc.parallelize([4 ,5 ,6,7,8,9,10])
df2 = df.subtract(df1)
df2.show()
df3 = df1.subtract(df)
df3.show()
Run Code Online (Sandbox Code Playgroud)
只想检查结果,看看我是否理解这个功能.但得到这个错误'PipelinedRDD'对象没有属性'显示'任何建议?
我对Redshift SQL很新.
select * from myredshift_tbl
where local_date between \'2016-01-01\' and \'2017-02-01\';
Run Code Online (Sandbox Code Playgroud)
但得到了这个错误:
[amazon] [500310]"\"处或附近的操作语法错误无效.我相信Redshift使用单引号我需要逃避单引号.
我有一个数据帧
test = spark.createDataFrame([('bn', 12452, 221), ('mb', 14521, 330),('bn',2,220),('mb',14520,331)],['x','y','z'])
test.show()
Run Code Online (Sandbox Code Playgroud)
我需要根据条件计算行数:
test.groupBy("x").agg(count(col("y")>12453),count(col("z")>230)).show()
Run Code Online (Sandbox Code Playgroud)
这使
+---+------------------+----------------+
| x|count((y > 12453))|count((z > 230))|
+---+------------------+----------------+
| bn| 2| 2|
| mb| 2| 2|
+---+------------------+----------------+
Run Code Online (Sandbox Code Playgroud)
对于某些条件,它只是行的计数而不是行的计数.
我有一个包含空值的数据框:
from pyspark.sql import functions as F
df = spark.createDataFrame(
[(125, '2012-10-10', 'tv'),
(20, '2012-10-10', 'phone'),
(40, '2012-10-10', 'tv'),
(None, '2012-10-10', 'tv')],
["Sales", "date", "product"]
)
Run Code Online (Sandbox Code Playgroud)
我需要计算“销售额”列中的非空值。
我尝试了3种方法。
第一个我做对了:
df.where(F.col("sales").isNotNull()).groupBy('product')\
.agg((F.count(F.col("Sales")).alias("sales_count"))).show()
# product | sales_count
# phone | 1
# tv | 2
Run Code Online (Sandbox Code Playgroud)
第二个是不正确的:
df.groupBy('product')\
.agg((F.count(F.col("Sales").isNotNull()).alias("sales_count"))).show()
# product | sales_count
# phone | 1
# tv | 3
Run Code Online (Sandbox Code Playgroud)
第三次,我得到了错误:
df.groupBy('product')\
.agg((F.col("Sales").isNotNull().count()).alias("sales_count")).show()
Run Code Online (Sandbox Code Playgroud)
类型错误:“列”对象不可调用
第二种和第三种方法可能会导致错误的原因是什么?
我试过安装quandl
pip install quandl
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
Collecting quandl
Using cached Quandl-3.0.1-py2.py3-none-any.whl
Collecting pyOpenSSL (from quandl)
Using cached pyOpenSSL-16.0.0-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): pyasn1 in /usr/local/lib/python3.2/dist-packages (from quandl)
Collecting more-itertools (from quandl)
Using cached more-itertools-2.2.tar.gz
Requirement already satisfied (use --upgrade to upgrade): six in ./.local/lib/python3.2/site-packages (from quandl)
Collecting ndg-httpsclient (from quandl)
Using cached ndg_httpsclient-0.4.1.tar.gz
Requirement already satisfied (use --upgrade to upgrade): numpy>=1.8 in /usr/local/lib/python3.2/dist-packages (from quandl)
Requirement already satisfied (use --upgrade to upgrade): python-dateutil in ./.local/lib/python3.2/site-packages (from quandl)
Requirement …
Run Code Online (Sandbox Code Playgroud) 使用包含列的数据框,列中的值是列表,
id | values
1 | ['good','good','good','bad','bad','good','good']
2 | ['bad','badd','good','bad',Null,'good','bad']
....
Run Code Online (Sandbox Code Playgroud)
如何获得列表中最常显示的字符串?预期输出:
id | most_frequent
1 | 'good'
2 | 'bad'
....
Run Code Online (Sandbox Code Playgroud) 从这篇文章继续: Pandas groupby 与 sklearn 预处理相结合
我需要通过按两列缩放分组数据来进行预处理,不知怎的,第二种方法会出现一些错误
import pandas as pd
import numpy as np
from sklearn.preprocessing import robust_scale,minmax_scale
df = pd.DataFrame( dict( id=list('AAAAABBBBB'),
loc = (10,20,10,20,10,20,10,20,10,20),
value=(0,10,10,20,100,100,200,30,40,100)))
df['new'] = df.groupby(['id','loc']).value.transform(lambda x:minmax_scale(x.astype(float) ))
df['new'] = df.groupby(['id','loc']).value.transform(lambda x:robust_scale(x ))
Run Code Online (Sandbox Code Playgroud)
第二个给我这样的错误:
ValueError:需要 2D 数组,却得到 1D 数组:array=[ 0. 10. 100.]。如果数据具有单个特征,则使用 array.reshape(-1, 1) 重塑数据;如果数据包含单个样本,则使用 array.reshape(1, -1) 重塑数据。
如果我使用重塑我会得到这样的错误:
例外:数据必须是一维的
如果我打印出分组数据,g['value']
那就是 pandas 系列。
for n, g in df.groupby(['id','loc']):
print(type(g['value']))
Run Code Online (Sandbox Code Playgroud)
你知道是什么原因造成的吗?
谢谢。
对于一个项目,我需要 Python 版本 3.6.8,我曾经pyenv install -l
列出所有可安装的版本,但找不到它。在我尝试了几次之后,包括: use brew upgrade pyenv
,尝试卸载 pyenv,尝试brew update
brew upgrade
然后更新 pyenv,仍然没有找到我需要的版本。有什么建议吗?谢谢。
我正在使用 pyspark 2.0 我有一个像这样的 df:
+----------+----------+--------
|pid | date| p_category
+----------+----------+--------
| 1ba |2016-09-30|flat
| 3ed |2016-09-30|ultra_thin
+----------+----------+----------
Run Code Online (Sandbox Code Playgroud)
我做了一个
df.groupBy("p_category","date") \
.agg(countDistinct("pid").alias('cnt'))
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
+-------------+----------+------+
|p_category | date| cnt|
+-------------+----------+------+
| flat |2016-09-30|116251|
|ultra_thin |2016-09-30|113017|
+-------------+----------+------+
Run Code Online (Sandbox Code Playgroud)
但我想要这样的数据透视表:
+----------+----------+------+
|date | flat| ultra-thin
+----------+----------+------+
2016-09-30 | 116251|113017
------------------------------
df.groupBy("p_category","date") \
.agg(countDistinct("pid").alias('cnt')).pivot("p_category")
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
“DataFrame”对象没有属性“pivot”
在这种情况下我该如何进行枢轴或者有其他解决方案?谢谢
我在 Spark 中有一个数据帧,其中包含 Unix(Epoch) 时间和时区名称。我希望根据不同的tz名称将epochtime转换为当地时间。我的数据如下所示:
data = [
(1420088400, 'America/New_York'),
(1420088400, 'America/Los_Angeles'),
(1510401180, 'America/New_York'),
(1510401180, 'America/Los_Angeles')]
df = spark.createDataFrame(data, ["epoch_time", "tz_name"])
df.createOrReplaceTempView("df")
df1 = spark.sql("""select *, from_unixtime(epoch_time) as gmt_time,"
from_utc_timestamp(from_unixtime(epoch_time), tz_name) as local_time"
from df""")
df1.show(truncate= False)
Run Code Online (Sandbox Code Playgroud)
结果如下:
+----------+-------------------+-------------------+---------------------+
|epoch_time|tz_name |gmt_time |local_time |
+----------+-------------------+-------------------+---------------------+
|1420088400|America/New_York |2015-01-01 05:00:00|2015-01-01 00:00:00.0|
|1420088400|America/Los_Angeles|2015-01-01 05:00:00|2014-12-31 21:00:00.0|
|1510401180|America/New_York |2017-11-11 11:53:00|2017-11-11 06:53:00.0|
|1510401180|America/Los_Angeles|2017-11-11 11:53:00|2017-11-11 03:53:00.0|
+----------+-------------------+-------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)
我是否应该首先使用 from_unixtime 将 epochtime 更改为时间字符串,然后使用 to_utc_timestamp 将其更改为 utc 时间戳,最后使用 tz_name 将此 UTC 时间戳更改为本地时间?尝试了这个但出现错误
df2 = spark.sql("""select *, from_unixtime(epoch_time) as gmt_time, …
Run Code Online (Sandbox Code Playgroud)使用mlflow.set_tracking_uri设置tracking_uri和set_experiment,出现错误并再次检查以运行以下代码。收到错误“异常:使用 UUID 运行已处于活动状态。” 尝试使用mlflow.end_run
结束当前运行,但得到 RestException:RESOURCE_DOES_NOT_EXIST:未找到运行 UUID。目前陷入了这个无限循环。有什么建议吗?
mlflow.set_experiment("my_experiment")
mlflow.start_run(run_name='my_project')
mlflow.set_tag('input_len',len(input))
mlflow.log_param('metrics', r2)
Run Code Online (Sandbox Code Playgroud) 有一个包含多列的 csv 文件,有些列混合了字母和数字。需要删除字母并设置为空并将列更改为整数但出现一些错误。似乎 Pandas 最近添加了可为空的整数类型。https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html。但是在更改为 int 时我仍然会出错。我需要将列保留为 int,因此我无法使用另一种解决方法将列设置为在列中使用 NAN 浮动。数据如下所示:
id count volume
001, A , 1
002, 1 , 2
Run Code Online (Sandbox Code Playgroud)
列数和卷包含以下值:“1”、“2”、“A”、.....
我使用 re 模块来删除字母和空格
df["count"] = df["count"].apply(lambda x: re.sub(r'\s[a-zA-Z]*', '',x))
Run Code Online (Sandbox Code Playgroud)
现在列中的值看起来像:'1'、'2'、''、......
尝试更改为“Int64”但出现错误:
df["count"].astype(str).astype('Int64')
Run Code Online (Sandbox Code Playgroud)
类型错误:对象无法转换为 IntegerDtype
任何建议或解决方法?
pyspark ×6
apache-spark ×3
count ×2
pandas ×2
attributes ×1
epoch ×1
installation ×1
mlflow ×1
null ×1
pip ×1
pivot ×1
pyenv ×1
scikit-learn ×1
sql ×1
timezone ×1