请为Pandas建议pyspark数据帧替代方案df['col'].unique().
我想列出pyspark数据帧列中的所有唯一值.
不是SQL类型的方式(registertemplate然后SQL查询不同的值).
我也不需要groupby->countDistinct,而是想检查该列中的不同VALUES.
我正在尝试的是读取一个csv来创建一个数据帧---在列中进行更改---再次更新/反映更改的值到相同的csv(to_csv) - 再次尝试读取该csv以生成另一个数据帧...我收到一个错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 7: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
我的代码是
import pandas as pd
df = pd.read_csv("D:\ss.csv")
df.columns #o/p is Index(['CUSTOMER_MAILID', 'False', 'True'], dtype='object')
df['True'] = df['True'] + 2 #making changes to one column of type float
df.to_csv("D:\ss.csv") #updating that .csv
df1 = pd.read_csv("D:\ss.csv") #again trying to read that csv
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 7: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
所以请建议我如何避免错误并能够再次将该csv读取到数据帧.
我知道某处我在读取和写入csv时缺少"encode = some codec type"或"decode = some type".
但我不知道到底应该改变什么.所以需要帮助.
我用databrick csv包启动了shell
#../spark-1.6.1-bin-hadoop2.6/bin/pyspark --packages com.databricks:spark-csv_2.11:1.3.0
Run Code Online (Sandbox Code Playgroud)
然后我读了一个csv文件做了一些groupby操作并将其转储到csv.
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load(path.csv') ####it has columns and df.columns works fine
type(df) #<class 'pyspark.sql.dataframe.DataFrame'>
#now trying to dump a csv
df.write.format('com.databricks.spark.csv').save('path+my.csv')
#it creates a directory my.csv with 2 partitions
### To create single file i followed below line of code
#df.rdd.map(lambda x: ",".join(map(str, x))).coalesce(1).saveAsTextFile("path+file_satya.csv") ## this creates one partition in directory of csv name
#but in both cases no columns information(How to add column names to that csv …Run Code Online (Sandbox Code Playgroud) 我只是很想知道MIMEMultipart是否有任何属性,我可以通过我的电子邮件正文部分...只有我想出的部分是
msg = MIMEMultipart()
msg["From"] = emailfrom
msg["To"] = emailto
msg["Subject"] = "hi find the attached file"
msg.preamble = "please PFA"
Run Code Online (Sandbox Code Playgroud)
有蚂蚁之类的东西吗?
msg["Body"] = I will add a string or a text file
Run Code Online (Sandbox Code Playgroud)
我用Google搜索并找到了
body = MIMEMultipart('alternative')
body.attach(MIMEText(text))
Run Code Online (Sandbox Code Playgroud)
但不适用于我的情况.还有一件事,MIMEMultipart('替代')这个部分是如何工作或运作的.
请建议.
来自PySpark的SQL数据帧
name age city
abc 20 A
def 30 B
Run Code Online (Sandbox Code Playgroud)
如何获取最后一行.(如df.limit(1)我可以将第一行数据帧放入新数据帧中).
我如何通过index.like row no访问数据帧行.12或200.
在熊猫我能做到
df.tail(1) # for last row
df.ix[rowno or index] # by index
df.loc[] or by df.iloc[]
Run Code Online (Sandbox Code Playgroud)
我只是好奇如何以这种方式或替代方式访问pyspark数据帧.
谢谢
请建议如何在spark数据帧中的列上实现字符串包含,在我曾经做过的pandas中
df1 = df[df['col1'].str.contains('anystring_to_match')]
Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框
name genre
satya |ACTION|DRAMA|IC|
satya |COMEDY|BIOPIC|SOCIAL|
abc |CLASSICAL|
xyz |ROMANCE|ACTION|DARMA|
def |DISCOVERY|SPORT|COMEDY|IC|
ghj |IC|
Run Code Online (Sandbox Code Playgroud)
现在我想查询数据框,以便我可以获得第 1,5 行和 6.i:ei 想要找到 |IC| 单独或与其他类型的任何组合。
到目前为止,我可以使用
df[df['genre'] == '|ACTION|DRAMA|IC|'] ######exact value yields row 1
Run Code Online (Sandbox Code Playgroud)
或字符串包含搜索
df[df['genre'].str.contains('IC')] ####yields row 1,2,3,5,6
# as BIOPIC has IC in that same for CLASSICAL also
Run Code Online (Sandbox Code Playgroud)
但我不要这两个。
#df[df['genre'].str.contains('|IC|')] #### row 6
# This also not satisfying my need as i am missing rows 1 and 5
Run Code Online (Sandbox Code Playgroud)
所以我的要求是找到具有 |IC| 的流派 在它们中。(我的字符串搜索失败,因为 python 将 '|' 视为 or 运算符)
有人建议一些 reg 或任何方法来做到这一点。感谢 …
我有一个数据帧,我需要根据以下条件过滤它
CITY == 'Mumbai' & LANGUAGE == 'English' & GENRE == 'ACTION' & count_GENRE >= 1
CITY == 'Mumbai' & LANGUAGE == 'English' & GENRE == 'ROMANCE' & count_GENRE >= 1
CITY == 'Mumbai' & LANGUAGE == 'Hindi' & count_LANGUAGE >= 1 & GENRE == 'ACTION'
Run Code Online (Sandbox Code Playgroud)
当我试图这样做的时候
df1 = df.query(condition1)
df2 = df.query(condition2)
Run Code Online (Sandbox Code Playgroud)
我收到内存错误(因为我的数据框大小是巨大的).
所以我计划通过过滤主要条件然后子条件,这样负载会更少,性能会更好.
通过解析上述条件,以某种方式设法获得
main_filter = "CITY == 'Mumbai'"
sub_cond1 = "LANGUAGE == 'English'"
sub_cond1_cond1 = "GENRE == 'ACTION' & count_GENRE >= 1"
sub_cond1_cond2 = "GENRE == 'ROMANCE' …Run Code Online (Sandbox Code Playgroud) 我有两个数据帧
df
city mail
a satya
b def
c akash
d satya
e abc
f xyz
#Another Dataframe d as
city mail
x satya
y def
z akash
u ash
Run Code Online (Sandbox Code Playgroud)
所以现在我需要更新df中的城市来自'd'中比较邮件的更新值,如果找不到某些邮件ID,它应该保持不变.所以看起来应该是这样的
df ### o/p should be like
city mail
x satya
y def
z akash
x satya #repeated so same value should placed here
e abc # not found so as it was
f xyz
Run Code Online (Sandbox Code Playgroud)
我试过了 -
s = {'mail': ['satya', 'def', 'akash', 'satya', 'abc', 'xyz'],'city': ['a', 'b', 'c', 'd', …Run Code Online (Sandbox Code Playgroud) 说我有这样的数据帧
name age city
abc 20 A
def 30 B
Run Code Online (Sandbox Code Playgroud)
我想在数据框的末尾添加一个摘要行,所以结果就像
name age city
abc 20 A
def 30 B
All 50 All
Run Code Online (Sandbox Code Playgroud)
所以String'All',我可以很容易地说,但是如何得到sum(df ['age'])###列对象是不可迭代的
data = spark.createDataFrame([("abc", 20, "A"), ("def", 30, "B")],["name", "age", "city"])
data.printSchema()
#root
#|-- name: string (nullable = true)
#|-- age: long (nullable = true)
#|-- city: string (nullable = true)
res = data.union(spark.createDataFrame([('All',sum(data['age']),'All')], data.columns)) ## TypeError: Column is not iterable
#Even tried with data['age'].sum() and got error. If i am using [('All',50,'All')], it is doing …Run Code Online (Sandbox Code Playgroud)