我创建了一个包含 3 列的数据框:zip、lat、lng
我想选择 zip = 00650 的 lat 和 lng 值
所以,我尝试使用:
sqlContext.sql("select lat,lng from census where zip=00650").show()
Run Code Online (Sandbox Code Playgroud)
但它返回 ArrayOutOfBound Exception 因为它没有任何值。如果我删除 where 子句,它运行良好。
有人可以解释一下我做错了什么吗?
数据框架构:
root
|-- zip: string (nullable = true)
|-- lat: string (nullable = true)
|-- lng: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)
前 10 行是:
+-----+---------+-----------+
| zip| lat| lng|
+-----+---------+-----------+
|00601|18.180555| -66.749961|
|00602|18.361945| -67.175597|
|00603|18.455183| -67.119887|
|00606|18.158345| -66.932911|
|00610|18.295366| -67.125135|
|00612|18.402253| -66.711397|
|00616|18.420412| -66.671979|
|00617|18.445147| -66.559696|
|00622|17.991245| -67.153993|
|00623|18.083361| -67.153897|
|00624|18.064919| -66.716683|
|00627|18.412600| -66.863926| …Run Code Online (Sandbox Code Playgroud) 假设我有一个像这样的网址:
https://example.com/myproject/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
Run Code Online (Sandbox Code Playgroud)
或者它可能是本地主机上的网页,例如:
localhost:63342/my project/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
Run Code Online (Sandbox Code Playgroud)
我必须从二维数组中的这些 url 中提取查询字段(出现在“?”之后),如下所示:
_ijt | hsdlgh8h5g8hh489sajoej
a | 102
b | a m
c | 45
d | all
e | all
Run Code Online (Sandbox Code Playgroud)
请注意,在“b”字段中,我已将“%20”替换为空格。_ijt、a、b、c、d、e 等字段的数量可能会有所不同,它们的名称例如“a”可以是“城市”。到目前为止,我已经使用正则表达式提取了 '?' 之后的部分。然后使用 split("&") 方法将字符串拆分为多个字符串。代码 -
val url=localhost:63342/my project/index-dev.html?_ijt=hsdlgh8h5g8hh489sajoej&a=102&b=a%20m&c=45&d=all&e=all
val pattern="""(http|htpps)([A-Za-z0-9\:\/\%\-\.]*)\?""".r
val temp_url=pattern.replaceFirstIn(url,"")
val fields=temp_url.split("&")
println(fields.foreach(println))
Run Code Online (Sandbox Code Playgroud)
输出是:
_ijt=hsdlgh8h5g8hh489sajoej
a=102
b=a%20m
c=45
d=all
e=all
Run Code Online (Sandbox Code Playgroud)
但这似乎不是执行此操作的正确方法。有什么帮助吗?
我正在尝试将行中的值与其另一列中的值转换为不同的列。例如 -
输入数据框就像 -
+-----------+
| X | Y | Z |
+-----------+
| 1 | A | a |
| 2 | A | b |
| 3 | A | c |
| 1 | B | d |
| 3 | B | e |
| 2 | C | f |
+-----------+
Run Code Online (Sandbox Code Playgroud)
输出数据框应该是这样的 -
+------------------------+
| Y | 1 | 2 | 3 |
+------------------------+
| A | a | b | c |
| B …Run Code Online (Sandbox Code Playgroud) 我正在使用 xmlutils 包将 xml 文件转换为 csv。我的代码如下:
from xmlutils.xml2csv import xml2csv as x
input_path='/media/ishan/Local Disk/doc.xml'
output_path='media/ishan/Local Disk/d.csv'
data=x(input_path,output_path,encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常。但是当我输入:
data.convert(tag="sku")
Run Code Online (Sandbox Code Playgroud)
它显示以下错误:
AttributeError Traceback (most recent call last)
<ipython-input-27-f15935c368f9> in <module>()
----> 1 data.convert(tag="PIES")
/home/ishan/.local/lib/python3.5/site-packages/xmlutils/xml2csv.py in convert(self, tag, delimiter, ignore, noheader, limit, buffer_size, quotes)
55
56 # get to the root
---> 57 event, root = self.context.next()
58
59 items = []
AttributeError: '_IterParseIterator' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)
我无法理解我做错了什么。我对这个包完全陌生。为什么我收到这个错误?如果您可以建议任何其他将 xml 文件转换为 csv 的方法,这对我也有帮助。提前致谢。
我有一个带有列的火花数据框 - 类型的"日期"和类型的timestamp"数量" long.对于每个日期,我都有一些数量的价值.日期按递增顺序排序.但是有一些日期缺失了.例如 - 当前df -
Date | Quantity
10-09-2016 | 1
11-09-2016 | 2
14-09-2016 | 0
16-09-2016 | 1
17-09-2016 | 0
20-09-2016 | 2
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,df有一些缺失的日期,如12-09-2016,13-09-2016等.我想在数量字段中为那些缺少的日期添加0,这样得到的df应该看起来像 -
Date | Quantity
10-09-2016 | 1
11-09-2016 | 2
12-09-2016 | 0
13-09-2016 | 0
14-09-2016 | 0
15-09-2016 | 0
16-09-2016 | 1
17-09-2016 | 0
18-09-2016 | 0
19-09-2016 | 0
20-09-2016 | 2
Run Code Online (Sandbox Code Playgroud)
任何有关此的帮助/建议将不胜感激.提前致谢.请注意,我在scala编码.