我有一个数据帧,我需要根据以下条件过滤它
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) 我已经从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()...
请建议!!!谢谢
当我试图通过读取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文件来创建数据帧.
我有一个名为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) 我有一个熊猫数据框:
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数相同,则可以返回其中任何一个城市。
我有一个超过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解析器进行管理。但是在这种情况下,我不知道该如何处理。
只是有意思,如果周转换行可以有一些超出范围的地方,则默认为...
有想法但作为新手。没有那么多经验。
如果有人可以提供一条代码行来解决这个问题,那将是非常有帮助的。
我有一个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) 我有一个列表,项目是字符串,但从一些操作中我得到了列表,因为字符串项目被额外的“括起来”'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) 我正在尝试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) 我的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过滤条件中我如何/在何处完全符合正则表达式来实现这一目标?如何实现startswith或endswith'好'(精确的单词搜索)?
我对下面的代码片段中的全局关键字行为感到困惑,我期望在所有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)
从文本文件行读取后,我有一个这样的字符串:
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) 我有一个 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)