我有一个包含数千行的数据集,其中包含一列“状态”和一些其他列。
示例数据集
import pandas as pd
data = {'State':['C','C','C','R','R','D','D','R','C','C','R','D','R','C','R','D','R'],
'Qd': [3, 2, 1, 0,2,2,5,7,9,7,14,34,12,10,11,14,15],
df = pd.DataFrame.from_dict(data)
'State' 列有一个循环类型输入值,例如 'C,R,D,R',然后又是 'C,R,D,R'。我想将数据集拆分为多个数据框,例如
df1
df2
df3
每个数据框将包含来自状态列的一个完整循环。如何做到这一点?
我正在考虑创建一个数据帧列表并使用 for 循环将每个循环值存储在每个数据帧中。
答案 0 :(得分:0)
以下几行假设项目包含一组周期性状态值。 data0 是任何拆分过程之前的熊猫数据框。所有状态值都遵循列表项目中声明的顺序。
import pandas as pd
items=['C','R','D','R']
pattern_length=len(items)
count=0
current_state=data0.State[0]
dataframes=list()
temp_df=pd.DataFrame()
df_count=0
for index, row in data0.iterrows():
if current_state!=row.State[0]:
count=count+1
current_state=row.State[0]
if count==pattern_length:
dataframes.append(temp_df)
temp_df=pd.DataFrame()
count=0
df_count=df_count+1
temp_df=temp_df.append(row, ignore_index=True)
dataframes.append(temp_df)
df_count=df_count+1
注意,dataframes[0]、dataframes[1]等都是拆分后的数据帧。此外,df_count 应该为您提供创建的数据框总数。