我有一个问题,我需要动态更新星火数据中的列。
基本上,我需要遍历列列表,如果列已经存在于列表中,将其重命名为该列加上它的索引。
我尝试的代码如下所示:
def dup_cols(df):
for i, icol in enumerate(df.columns):
for x, xcol in enumerate(df.columns):
if icol == xcol and i != x:
df = df.withColumnsRenamed(xcol, xcol + '_' + str(x))
return df
但这个名称按名称
我想在我的星火DataFrame上动态地应用. list中的列名。
from pyspark.sql.functions import col
from pyspark.sql.types import BooleanType
def get_dtype(dataframe,colname):
return [dtype for name, dtype in dataframe.dtypes if name == colname][0]
def get_matches(dataframe):
return [x for x in dataframe.columns if ge
我对Pyspark有一个问题:当我用Pyspark导入我的数据集时,我的所有列都被认为是一个字符串,即使我的列是数字。
当我使用Pandas导入数据时,我没有这个问题。
我实际上是在使用一个平台来开发: Dataiku。数据已经在平台上了,我用下面的代码导入它们:
# Example: Read the descriptor of a Dataiku dataset
mydataset =
dataiku.Dataset("Extracts___Retail_Master_Data___Product_Hierarchy_HDFS")
# And read it as a S
我正在尝试理解DataFrame列类型。当然,DataFrame不是一个物化的对象,它只是一组Spark的指令,将来要转换成代码。但我认为,这个类型列表代表了在执行操作时JVM中可能出现的对象类型。
import pyspark
import pyspark.sql.types as T
import pyspark.sql.functions as F
data = [0, 3, 0, 4]
d = {}
d['DenseVector'] = pyspark.ml.linalg.DenseVector(data)
d['old_DenseVector'] =
我有一个pyspark dataframe,其中一列填充了列表,要么包含条目,要么只包含空列表。我想高效地过滤掉所有包含空列表的行。
import pyspark.sql.functions as sf
df.filter(sf.col('column_with_lists') != [])
返回以下错误:
Py4JJavaError: An error occurred while calling o303.notEqual.
: java.lang.RuntimeException: Unsupported literal type class
也许我可以检查列表的长度,
我有一个具有多个列的pyspark数据框架如下所示:
name col1 col2 col3
A 1 6 7
B 2 7 6
C 3 8 5
D 4 9 4
E 5 8 3
我希望通过将col1、col2、col3的列名和列值组合成两个新的列,例如new_col和new_col_val,跨行扩展,从而在pyspark中创建一个新的dataframe:
我在R中使用以下代
我有多个列的dataframe,如下所示:
| ID | Grouping | Field_1 | Field_2 | Field_3 | Field_4 |
|----|----------|---------|---------|---------|---------|
| 1 | AA | A | B | C | M |
| 2 | AA | D | E | F | N |
我希望创建2个新列,并在新字段中存储现有列的列表,并在现有字段上使用group by。这样,
我有一个DataFrames列表,我想从满足以下条件之一的列表中删除DataFrames:
如果DataFrame有2列或更少列。
如果DataFrame在任何地方都包含字符串“A3”。
我尝试过的列长度代码如下所示,列表名为df_list:
for i in df_list:
if len(i.columns) == 1:
del[i]
或
df_list = [i for i in df_list if not (i.shape[1] == 2)]
我尝试删除包含字符串'A3‘anywhere的A3的代码是:
df_list = [i for i
我使用了转换为json的api,使用pandas进行了标准化,并使用pyspark转换为dataframe。 但是我不能改变列,无论是表单还是任何东西,我不能选择它们。 我想知道我哪里错了! import requests
import json
import pandas as pd
import pyspark.sql.functions as F
import os
from pyspark.sql.types import DoubleType
from pyspark.sql import types
base_url = "https://api.talkwalk
我的dataframe有40+列。我想要生成一个列表,每个列表包含一个列的值。下面是我试着做的事情
cols= df.columns
cols = cols.tolist()
for col in cols:
col = df.col.tolist()
错误:
'DataFrame‘对象没有属性'col’
因此,循环似乎试图在dataframe中找到“cols”,而不是从“cols”列表中获取该项目。
使用
A = df.A.tolist()
所以我猜我在循环中犯了个错误?
我有一个包含多级列的dataframe,如下面的MWE中所示:
df = pd.DataFrame([[1,2],[3,4]], columns=[['a','c'],['b','d']], index=['one','two'])
df.columns.names = ['aa', 'bb']
它看起来像这样:
In [267]: df
Out[267]:
aa a c
bb b d
one 1 2
two 3 4
我还有一个字典列表,如下所示
有没有办法用pyspark 2.1.0创建/填充列,其中列的名称是另一个列的值?我尝试了以下几种方法
def createNewColumnsFromValues(dataFrame, colName, targetColName):
"""
Set value of column colName to targetColName's value
"""
cols = dataFrame.columns
#df = dataFrame.withColumn(f.col(colName), f.col(targetCol