我有一个DataFrame,我分组.我想在数据框中添加另一列,这是每组的函数diff的结果.就像是:
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)})
df_grouped = df.groupby('B')
for name, group in df_grouped:
new_df["D_diff"] = group["D"].diff()
Run Code Online (Sandbox Code Playgroud)
我想为每个组得到D列的不同,并且有一个包含带有diff计算的新列的DF.
我有一个数据帧,列时间为a,b,c,d,val.我想创建一个带有附加列的数据框,它将包含每个组中行的行号,其中a,b,c,d是组键.
我尝试使用spark sql,通过定义一个窗口函数,特别是在sql中它看起来像这样:
select time, a,b,c,d,val, row_number() over(partition by a,b,c,d order by time) as rn from table
group by a,b,c,d,val
Run Code Online (Sandbox Code Playgroud)
我想在数据帧itslef上执行此操作,而不使用sparksql.
谢谢
我正在通过schema-workbench或ivy schema editor创建多维数据集(xml架构).当我发布它时,我想知道模式(mondrian.xml文件)实际保存在哪里,这些文件的位置是什么?
谢谢,
我明白为了使用ml.clustering Kmeans算法(实际上任何ml算法?)和数据帧,我需要让我的数据帧具有某种形状:(id,vector []),或类似的东西.如何应用正确的转换将常规表(存储在df中)转换为所需的结构?这是我的df:
from pyspark import SparkConf
from pyspark import SparkContext
conf = SparkConf()
sc = SparkContext(conf=conf)
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
#-----------------------------
#creating DF:
l = [('user1', 2,1,4),('user2',3,5,6)]
temp_df = spark.createDataFrame(l)
temp_df.show()
+-----+---+---+---+
| _1| _2| _3| _4|
+-----+---+---+---+
|user1| 2| 1| 4|
|user2| 3| 5| 6|
+-----+---+---+---+
Run Code Online (Sandbox Code Playgroud)
我想用:
from pyspark.ml.clustering import KMeans
kmean = KMeans().setK(2).setSeed(1)
model = kmean.fit(temp_df)
Run Code Online (Sandbox Code Playgroud)
我得到:IllegalArgumentException:u'Field"features"不存在.
谢谢,
为了在Pandas中用groupby"连接"几行到1个列表,我可以这样做:
df = pd.DataFrame({'A': [1,1,2,2,2,2,3],'B':['a','b','c','d','e','f','g']})
df = df.groupby('A')['B'].apply(list)
Run Code Online (Sandbox Code Playgroud)
我会得到:
A
-------------------
1 [a, b]
2 [c, d, e, f]
3 [g]
Run Code Online (Sandbox Code Playgroud)
我想用agg做同样的事情:
f = {"B":[list]}
df = df.groupby('A').agg(f)
Run Code Online (Sandbox Code Playgroud)
这给了错误,任何想法?
谢谢,
如何定义一个像中值滤波器(medfilt2)一样的圆形滤波器,而不是[nn]的平方邻域,在半径为r的圆形邻域上执行中值?我需要在2d-image上执行此操作.(最好当然应该快速工作).谢谢
我有以下数据:
A = [1 2 ; 3 2; 4 7; 10 2; 6 7; 10 9]
B = [1 2 3; 4 4 9; 1 8 0; 3 7 9; 3 6 8]
C = [4; 10; 6; 3; 1]
A =
1 2
3 2
4 7
10 2
6 7
10 9
B =
1 2 3
4 4 9
1 8 0
3 7 9
3 6 8
C.' =
4 10 6 3 1
Run Code Online (Sandbox Code Playgroud)
对于A(:,2) …
我需要在另一个列表中找到列表项.
例如:
a = ['s','u','v']
b = ['u','s','a']
Run Code Online (Sandbox Code Playgroud)
我想得到一个布尔数组(或列表),它指示a中的每个项目,如果b中存在此项目.所以对于那个例子我会得到:
[1,1,0]
Run Code Online (Sandbox Code Playgroud)
谢谢