我有一个Pandas系列的字符串列表:
0 [slim, waist, man]
1 [slim, waistline]
2 [santa]
Run Code Online (Sandbox Code Playgroud)
如您所见,列表因长度而异.我想要一种有效的方法将其折叠成一个系列
0 slim
1 waist
2 man
3 slim
4 waistline
5 santa
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用分解列表
series_name.split(' ')
Run Code Online (Sandbox Code Playgroud)
但我很难将这些字符串放回一个列表中.
谢谢!
我知道在JSON文件中不允许使用NaN.我经常使用
import pandas as pd
pd.read_json('file.json')
Run Code Online (Sandbox Code Playgroud)
将JSON读入python.浏览文档,我没有看到处理该值的选项.
我有一个JSON文件,data.json,看起来像
[{"city": "Los Angeles","job":"chef","age":30},
{"city": "New York","job":"driver","age":35},
{"city": "San Jose","job":"pilot","age":NaN}]
Run Code Online (Sandbox Code Playgroud)
如何将其读入python/pandas并处理NaN值?
编辑:
下面的惊人答案!! 谢谢fixxxer !! 就这样记录下来,从一个单独的文件中读取它
import pandas as pd
import json
text=open('data.json','r')
x=text.read()
y=json.loads(x)
data=pd.DataFrame(y)
data.head()
Run Code Online (Sandbox Code Playgroud) 如果我有Spark DataFrame包含arrays,我可以通过UDF在这些数组上使用Python List方法吗?如何将Spark DataFrame array<double>转换为Python列表?
下面是一个示例,其中包含一些UDF.我不确定为什么采取最大的工作,但采取len不.最后,我想创建一个包含原始数组列中的采样值的新列.如果您也可以提供帮助,那么也会出现关于期待两个参数,奖励积分的错误!
我有以下Spark DataFrame:
from pyspark.sql.functions import udf
from pyspark.sql import Row
from pyspark.sql.types import StringType
from pyspark.sql.types import IntegerType
from pyspark.sql.types import ArrayType
import random
df = sc.parallelize([Row(name='Joe',scores=[1.0,2.0,3.0]),
Row(name='Mary', scores=[3.0]),
Row(name='Mary', scores=[4.0,7.1])]).toDF()
>>> df.show()
+----+---------------+
|name| scores|
+----+---------------+
| Joe|[1.0, 2.0, 3.0]|
|Mary| [3.0]|
|Mary| [4.0, 7.1]|
+----+---------------+
>>> df
DataFrame[name: string, scores: array<double>]
def sampleWithReplacement(listIn,samples):
tempList = array()
count=0
while (count<samples):
tempList.append(random.sample(listIn,1)[0])
count=count+1
return tempList
def maxArray(listIn): …Run Code Online (Sandbox Code Playgroud) 我有一个序列文件,其值如下
(string_value, json_value)
Run Code Online (Sandbox Code Playgroud)
我不关心字符串值.
在Scala我可以通过阅读文件
val reader = sc.sequenceFile[String, String]("/path...")
val data = reader.map{case (x, y) => (y.toString)}
val jsondata = spark.read.json(data)
Run Code Online (Sandbox Code Playgroud)
我很难将其转换为PySpark.我试过用
reader= sc.sequenceFile("/path","org.apache.hadoop.io.Text", "org.apache.hadoop.io.Text")
data = reader.map(lambda x,y: str(y))
jsondata = spark.read.json(data)
Run Code Online (Sandbox Code Playgroud)
这些错误很神秘,但如果有帮助我可以提供.我的问题是,在pySpark2中读取这些序列文件的正确语法是什么?
我想我没有正确地将数组元素转换为字符串.如果我做一些简单的事情,我会得到类似的错误
m = sc.parallelize([(1, 2), (3, 4)])
m.map(lambda x,y: y.toString).collect()
Run Code Online (Sandbox Code Playgroud)
要么
m = sc.parallelize([(1, 2), (3, 4)])
m.map(lambda x,y: str(y)).collect()
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个看起来像这样的数据集。您可以看到列 X2 具有键值。我想通过 X2 列中的键值对 X1 列中的对值求和。我一直在尝试使用 ddply 或聚合,但我遇到了问题。有没有人有一个简单的方法来做到这一点?
> X1=rnorm(30,mean=20, sd=10)
> X2=rep(1:15,2)
>df= data.frame(X1,X2)
X1 X2
1 10.065545 1
2 6.938315 2
3 5.657782 3
4 11.371521 4
5 37.037992 5
6 13.443674 6
7 8.868314 7
8 5.944946 8
9 18.493563 9
10 16.059931 10
11 22.520693 11
12 17.172936 12
13 28.676676 13
14 27.200911 14
15 30.560696 15
16 22.435021 1
17 31.143627 2
18 19.234473 3
19 29.329251 4
20 18.420183 5
21 13.184905 …Run Code Online (Sandbox Code Playgroud)