相关疑难解决方法(0)

将数据帧拆分为多个数据帧

我有一个非常大的数据帧(大约100万行)和实验数据(60个受访者).我想将数据帧拆分为60个数据帧(每个参与者的数据帧).

在数据框(称为= data)中,有一个名为"name"的变量,它是每个参与者的唯一代码.

我尝试了以下,但没有任何反应(或者不会在一小时内停止).我打算做的是将数据帧(数据)拆分成更小的数据帧并将它们附加到列表(datalist):

import pandas as pd

def splitframe(data, name='name'):

    n = data[name][0]

    df = pd.DataFrame(columns=data.columns)

    datalist = []

    for i in range(len(data)):
        if data[name][i] == n:
            df = df.append(data.iloc[i])
        else:
            datalist.append(df)
            df = pd.DataFrame(columns=data.columns)
            n = data[name][i]
            df = df.append(data.iloc[i])

    return datalist
Run Code Online (Sandbox Code Playgroud)

我没有收到错误消息,脚本似乎永远都会运行!

有一种聪明的方法吗?

python split dataframe pandas

72
推荐指数
6
解决办法
13万
查看次数

遍历PySpark GroupedData

假设原始数据如下:

Competitor  Region  ProductA  ProductB
Comp1       A       £10       £15
Comp1       B       £11       £16
Comp1       C       £11       £15
Comp2       A       £9        £16
Comp2       B       £12       £14
Comp2       C       £14       £17
Comp3       A       £11       £16
Comp3       B       £10       £15
Comp3       C       £12       £15
Run Code Online (Sandbox Code Playgroud)

(参考:Python-根据列值将数据框拆分为多个数据框,并使用这些值命名

我希望获得基于列值的子数据框列表,例如Region,例如:

df_A :

Competitor  Region  ProductA  ProductB
Comp1       A       £10       £15
Comp2       A       £9        £16
Comp3       A       £11       £16
Run Code Online (Sandbox Code Playgroud)

在Python中,我可以这样做:

for region, df_region in df.groupby('Region'):
    print(df_region)
Run Code Online (Sandbox Code Playgroud)

如果df是Pyspark df,我可以做同样的迭代吗?

在Pyspark中,一旦执行df.groupBy(“ Region”),我就会获得GroupedData。我不需要像count,mean等之类的任何聚合。我只需要子数据帧的列表,每个子数据帧都有相同的“ Region”值。可能?

python apache-spark-sql pyspark

6
推荐指数
1
解决办法
1454
查看次数

如何按id将pandas数据帧拆分为数据帧列表?

我有一个大熊猫数据框(大约 150000 行)。我尝试过方法 groupby('id') 但在返回组元组中。我只需要一个数据帧列表,然后将它们转换为 np 数组批次以放入自动编码器(例如https://www.datacamp.com/community/tutorials/autoencoder-keras-tutorial但 1D)

所以我有一个熊猫数据集:

data = {'Name': ['Tom', 'Joseph', 'Krish', 'John', 'John', 'John', 'John', 'Krish'], 'Age': [20, 21, 19, 18, 18, 18, 18, 18],'id': [1, 1, 2, 2, 3, 3, 3, 3]}  
# Create DataFrame  
df = pd.DataFrame(data)  
# Print the output.  
df.head(10)
Run Code Online (Sandbox Code Playgroud)

我需要相同的输出(只是一个熊猫数据框列表)。另外,我需要一个未排序列表的列表,这很重要,因为它的时间序列。

data1 = {'Name': ['Tom', 'Joseph'], 'Age': [20, 21],'id': [1, 1]}  
data2 = {'Name': ['Krish', 'John', ], 'Age': [19, 18, ],'id': [2, 2]}  
data3 = {'Name': ['John', 'John', 'John', 'Krish'], …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

1
推荐指数
1
解决办法
107
查看次数

标签 统计

python ×3

dataframe ×2

pandas ×2

apache-spark-sql ×1

pyspark ×1

split ×1