我有一个非常大的数据帧(大约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)
我没有收到错误消息,脚本似乎永远都会运行!
有一种聪明的方法吗?
假设原始数据如下:
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”值。可能?
我有一个大熊猫数据框(大约 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)