小编Sat*_*tya的帖子

在pyspark dataframe中显示不同的列值:python

请为Pandas建议pyspark数据帧替代方案df['col'].unique().

我想列出pyspark数据帧列中的所有唯一值.

不是SQL类型的方式(registertemplate然后SQL查询不同的值).

我也不需要groupby->countDistinct,而是想检查该列中的不同VALUES.

pyspark pyspark-sql

65
推荐指数
6
解决办法
12万
查看次数

UnicodeDecodeError:('utf-8'codec)在读取csv文件时

我正在尝试的是读取一个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".

但我不知道到底应该改变什么.所以需要帮助.

python utf-8 pandas python-unicode

21
推荐指数
5
解决办法
7万
查看次数

用列名写一个csv并读取一个从Pyspark中的sparksql数据帧生成的csv文件

我用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)

apache-spark pyspark pyspark-sql

14
推荐指数
4
解决办法
4万
查看次数

如何通过MIMEMultipart发送电子邮件正文部分

我只是很想知道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('替代')这个部分是如何工作或运作的.

请建议.

python email

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

如何选择最后一行以及如何通过索引访问PySpark数据帧?

来自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数据帧.

谢谢

python apache-spark apache-spark-sql pyspark pyspark-sql

9
推荐指数
3
解决办法
3万
查看次数

pandas str.contains在Pyspark的pyspark数据框中

请建议如何在spark数据帧中的列上实现字符串包含,在我曾经做过的pandas中

df1 = df[df['col1'].str.contains('anystring_to_match')]
Run Code Online (Sandbox Code Playgroud)

apache-spark pyspark

6
推荐指数
1
解决办法
8005
查看次数

从 python pandas 的数据框列中搜索匹配的字符串模式

我有一个如下所示的数据框

 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 或任何方法来做到这一点。感谢 …

python regex string pandas

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

使用多处理过滤pandas中的大型数据帧

我有一个数据帧,我需要根据以下条件过滤它

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)

python traversal nodes dataframe pandas

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

从Pandas中不同数据框中的另一个匹配列更新数据框中的列值

我有两个数据帧

 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)

python pandas

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

python,pyspark:获取pyspark数据帧列值的总和

说我有这样的数据帧

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)

python pyspark pyspark-sql

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