小编Sat*_*tya的帖子

使用多处理过滤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
查看次数

pyspark中的RDD到DataFrame(来自rdd的第一个元素的列)

我已经从csv文件创建了一个rdd,第一行是该csv文件中的标题行.现在我想从该rdd创建数据框并保留rdd的第一个元素的列.

问题是我能够使用rdd.first()中的列创建数据框,但创建的数据框的第一行作为标题本身.如何删除?

lines = sc.textFile('/path/data.csv')
rdd = lines.map(lambda x: x.split('#####'))  ###multiple char sep can be there #### or #@# , so can't directly read csv to a dataframe
#rdd: [[u'mailid', u'age', u'address'], [u'satya', u'23', u'Mumbai'], [u'abc', u'27', u'Goa']]  ###first element is the header
df = rdd.toDF(rdd.first())  ###retaing te column from rdd.first()
df.show()
#mailid  age  address
 mailid  age  address   ####I don't want this as dataframe data
 satya    23  Mumbai
 abc      27  Goa
Run Code Online (Sandbox Code Playgroud)

如何避免第一个元素移动到数据帧数据.我可以在rdd.toDF(rdd.first())中给出任何选项来完成吗?

注意:我无法收集rdd到表单列表,然后从该列表中删除第一个项目,然后将该列表并行化为rdd再次形成rdd然后toDF()...

请建议!!!谢谢

python-2.7 apache-spark rdd pyspark pyspark-sql

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

通过读取Python的dask模块中的pickle文件来创建dask数据帧

当我试图通过读取pickle文件创建一个dask数据帧时,我得到一个错误

import dask.dataframe as dd
ds_df = dd.read_pickle("D:\test.pickle")

AttributeError: 'module' object has no attribute 'read_pickle'

but  it works fine with read_csv
Run Code Online (Sandbox Code Playgroud)

在熊猫中它像往常一样成功.

所以请纠正我,如果我在那里做错了什么或在dask我们无法通过阅读pickle文件来创建数据帧.

python dask

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

python:奇怪的str.contains行为

我有一个名为df的数据帧为df = pd.read_csv('my.csv')

    CUSTOMER_MAILID                       EVENT_GENRE       EVENT_LANGUAGE  
0   000.tushar@gmail.com                    |ROMANCE|          Hindi   
1   000.tushar@gmail.com                      |DRAMA|          TAMIL   
2        satya@gmail.com                    |ROMANCE|          Hindi   
3   000.tushar@gmail.com                      |DRAMA|          Hindi   
4          sat@gmail.com    |ACTION|ADVENTURE|SCI-FI|        English   
5   000.tushar@gmail.com    |ACTION|ADVENTURE|COMEDY|        English   
6       fdvklf@gmail.com                     |ACTION|          Hindi   
7        asdar@gmail.com                      |DRAMA|          Hindi   
8       dfvkme@gmail.com     |FANTASY|HORROR|ROMANCE|        English   
9   000.tushar@gmail.com  |ACTION|ADVENTURE|THRILLER|        English   
10        king@gmail.com                      |DRAMA|          Hindi   
11  000.tushar@gmail.com           |ROMANCE|THRILLER|        KANNADA   
12  000.tushar@gmail.com                      |DRAMA|          Hindi   
13  000.tushar@gmail.com     |ACTION|ADVENTURE|DRAMA|        English   
14      iamher@gmail.com     |ACTION|ADVENTURE|DRAMA|         TELUGU   
15  000.tushar@gmail.com               |BIOPIC|DRAMA|          Hindi   
16    0007ayan@gmail.com            |HORROR|THRILLER|          Hindi   
17    0007ayan@gmail.com     |ACTION|COMEDY|THRILLER|           ODIA   
18  000.tushar@gmail.com …
Run Code Online (Sandbox Code Playgroud)

python string pandas

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

在对另一列进行分组之后,查找一列值的最大出现

我有一个熊猫数据框:

        id                city
 000.tushar@gmail.com   Bangalore
 00078r@gmail.com       Mumbai
0007ayan@gmail.com      Jamshedpur
0007ayan@gmail.com      Jamshedpur
000.tushar@gmail.com    Bangalore
  00078r@gmail.com      Mumbai
  00078r@gmail.com      Vijayawada
  00078r@gmail.com      Vijayawada
  00078r@gmail.com      Vijayawada
Run Code Online (Sandbox Code Playgroud)

我想以id-wise查找出现的最大城市名称。因此,对于给定的ID,我可以说-这是他最喜欢的城市:

         id             city
000.tushar@gmail.com   Bangalore
00078r@gmail.com       Vijayawada
0007ayan@gmail.com     Jamshedpur
Run Code Online (Sandbox Code Playgroud)

使用groupby id和city可以得到:

         id                   city       count
0  000.tushar@gmail.com       Bangalore    2
1      00078r@gmail.com        Mumbai      2
2      00078r@gmail.com      Vijayawada    3
3    0007ayan@gmail.com      Jamshedpur    2
Run Code Online (Sandbox Code Playgroud)

如何进一步进行?我相信一些按组申请可以做到这一点,但不知道到底是什么会成功。所以请提出建议。

如果两个或三个城市的ID数相同,则可以返回其中任何一个城市。

python group-by aggregate max pandas

3
推荐指数
2
解决办法
1847
查看次数

避免pd.to_datetime中的pandas错误

我有一个超过1亿行的巨大数据框。由于我有一个日期列,不幸的是格式(混合)的日期字符串格式不正确。

现在,我通过以下方式将其转换为日期时间:

df['TRX_DATE'] = pd.to_datetime(df['TRX_DATE'],coerce=True)
# without any error
# Now i want to calculate week day from that date columns
df['day_type'] = [x.strftime('%A') for x in d['TRX_DATE']]
###ValueError: month out of range
Run Code Online (Sandbox Code Playgroud)

如果只有一个字段,我可以使用dateutil解析器进行管理。但是在这种情况下,我不知道该如何处理。

只是有意思,如果周转换行可以有一些超出范围的地方,则默认为...

有想法但作为新手。没有那么多经验。

如果有人可以提供一条代码行来解决这个问题,那将是非常有帮助的。

python datetime dataframe pandas

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

PySpark groupby和最大值选择

我有一个PySpark数据框

 name   city     date
 satya  Mumbai  13/10/2016
 satya  Pune    02/11/2016
 satya  Mumbai  22/11/2016
 satya  Pune    29/11/2016
 satya  Delhi   30/11/2016
 panda  Delhi   29/11/2016
 brata  BBSR    28/11/2016
 brata  Goa     30/10/2016
 brata  Goa     30/10/2016
Run Code Online (Sandbox Code Playgroud)

我需要为每个名称找出最喜欢的CITY,逻辑是“如果在“名称” +“城市”对上具有最大城市出现次数的城市,则将城市作为fav_city。如果发现多个相同的事件,则考虑具有最新日期的城市。会解释:

d = df.groupby('name','city').count()
#name  city  count
brata Goa    2  #clear favourite
brata BBSR   1
panda Delhi  1  #as single so clear favourite
satya Pune   2  ##Confusion
satya Mumbai 2  ##confusion
satya Delhi  1   ##shd be discard as other cities having higher count than this city

#So get …
Run Code Online (Sandbox Code Playgroud)

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

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

在 python 中使用 ast_literal_eval

我有一个列表,项目是字符串,但从一些操作中我得到了列表,因为字符串项目被额外的“括起来”'string' "。如何摆脱它。

我的代码示例是

 import ast
 d = ["'WORKSHOP'", "'KIDS'", "'EXHIBITION'", "'FANTASY'", "'FESTIVAL'"]
 result = ast.literal_eval(d)
ValueError: malformed node or string: ["'WORKSHOP'", "'KIDS'", "'EXHIBITION'", "'FANTASY'", "'FESTIVAL'"]
Run Code Online (Sandbox Code Playgroud)

我想要的输出为:

result = ['WORKSHOP', 'KIDS', 'EXHIBITION', 'FANTASY', 'FESTIVAL']
Run Code Online (Sandbox Code Playgroud)

对于整数:

res = [123, 345, 566, 78]
Run Code Online (Sandbox Code Playgroud)

python list

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

在python dask中使用分隔符读取csv

我正在尝试DataFrame通过读取由'#####'分隔的5个csv文件来创建一个哈希

代码是:

import dask.dataframe as dd
df = dd.read_csv('D:\temp.csv',sep='#####',engine='python')
res = df.compute()
Run Code Online (Sandbox Code Playgroud)

错误是:

dask.async.ValueError:
Dask dataframe inspected the first 1,000 rows of your csv file to guess the
data types of your columns.  These first 1,000 rows led us to an incorrect
guess.

For example a column may have had integers in the first 1000
rows followed by a float or missing value in the 1,001-st row.

You will need to specify some dtype information explicitly using the …
Run Code Online (Sandbox Code Playgroud)

python csv separator dask

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

通过在字符串列中查找精确单词(未组合)来过滤DataFrame

我的DataFrame有两列:

Name  Status
 a    I am Good
 b    Goodness!!!
 c    Good is what i feel
 d    Not Good-at-all
Run Code Online (Sandbox Code Playgroud)

我想过滤其中Status有一个字符串'Good'作为其确切单词的行,而不是与任何其他单词或字符组合.

所以输出将是:

Name  Status
a    i am Good
c    Good is what i feel
Run Code Online (Sandbox Code Playgroud)

另外两行中有一个'Good'字符串,但与其他字符混合在一起,因此不应该被拾取.

我试过做:

d = df[df['Status'].str.contains('Good')]  # But all rows come up
Run Code Online (Sandbox Code Playgroud)

我相信一些正则表达式(r'\bGood\b', Status)会这样做,但这不能一起总结.在DataFrame过滤条件中我如何/在何处完全符合正则表达式来实现这一目标?如何实现startswithendswith'好'(精确的单词搜索)?

python regex string dataframe pandas

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

Python全局关键字

我对下面的代码片段中的全局关键字行为感到困惑,我期望在所有3个打印中30,30,30.

def outer_function():
    #global a  ###commented intentionally
    a = 20
    def inner_function():
        global a
        a = 30
        print('a =',a)

    inner_function()
    print('a =',a)

a = 10
outer_function()
print('a =',a)
#Output:
#30
#20  #Expecting 30 here
#30
Run Code Online (Sandbox Code Playgroud)

在外部函数定义之后,所有混淆都来自"全局a".正如我在这个时间点的理解是"所有对变量的引用和赋值都全局反映在该变量上的全局关键字声明中".如果我没有注释到第一个全球状态网,那么我预计会发生这种情况.

为什么inner_function和value change中的全局声明不会反映在第二个打印i:e到outer_function(或外部作用域),而是反映在全局命名空间中.

请帮我澄清一下我的困惑.(对于那里的一些蟒蛇人来说,我可能听起来很愚蠢,但我不希望/这里有任何downvote)

python

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

字符串转换为python中的元组转换

从文本文件行读取后,我有一个这样的字符串:

To = "'abc@hcl.com','xyz@hcl.com','accc@infy.com','satya@lab.com','ach@lab.com'"
Run Code Online (Sandbox Code Playgroud)

我想将它转换为元组.我在做的是:

To = (To,)
type(To)  #o/p tuple
len(To)   #1
To
("'abc@hcl.com','xyz@hcl.com','accc@infy.com', 'sat@lab.com','ach@lab.com'",)   # output tuple
Run Code Online (Sandbox Code Playgroud)

预计我需要将每个值拆分,并将其存储到字符串或元组转换后的元组中:

To
('abc@hcl.com','xyz@hcl.com','accc@infy.com', 'sat@lab.com','ach@lab.com',)  # output tuple
len(To)   #should give 5
Run Code Online (Sandbox Code Playgroud)

python string tuples

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

将索引和字符串连接到新列

我有一个 3 列的数据框(包括索引):

   name   age
 0 satya   24
 1 abc     26
 2 xyz     29
 3 def     32
Run Code Online (Sandbox Code Playgroud)

因此需要添加一个新列detail来存储详细文件名,并且该列中的值应该类似于(str(file_index no))

   name   age  detail
 0 satya   24  file_0
 1 abc     26  file_1
 2 xyz     29  file_2 
 3 def     32  file_3
Run Code Online (Sandbox Code Playgroud)

为了实现这一点,我尝试了以下方法

df['detail']= str('file_'+df.index)   #not working shows error
df['detail'] = str('file'+'_'+str(df.index))  #worked but not what i want
df['detail'] = str(s+'_'+df.index[0].astype(str))  #error
Run Code Online (Sandbox Code Playgroud)

实现 for 循环和 iterrow

 for index, row in df.iterrows():
        df['detail'] = str('file'+'_'+row[index])   #IndexError: index out of bounds

for index, …
Run Code Online (Sandbox Code Playgroud)

python string dataframe pandas

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