根据列条件拆分数据框

时间:2021-07-22 14:09:13

标签: python pandas

大家好,我正在尝试通过将数据帧与列表进行比较来将数据帧拆分为多个子集。

combined = []
for i in df['reg_sch_cur'].unique():
    combined.append(i)
#creates a list with column 44 uniques

#split df
for i in combined:
     df= df[df['reg_sch_cur'] == i]

不幸的是,这只会为我节省最后一次迭代。 我想以现金形式存储每个拆分的数据帧(44),所以我假设 df = df[df['reg_sch_cur'] == i] 我必须添加一些东西来保存 df 的多个名称

2 个答案:

答案 0 :(得分:0)

您可以在第二个循环中创建一个空字典并将新生成的 df 保存在其中的新键下:

dict_dfs = dict()
for i in combined:
    dict_dfs[f"new_key_{i}"] = df[df['reg_sch_cur'] == i]

之后,您只需使用密钥即可获得 df。

答案 1 :(得分:0)

看起来像 DataFrame.groupby() 的情况。

import pandas as pd

df = pd.DataFrame(dict(a=[1,1,2,2,3,3], b=range(6)))
df

#    a  b
# 0  1  0
# 1  1  1
# 2  2  2
# 3  2  3
# 4  3  4
# 5  3  5

grouped = df.groupby('a')

for a, subset in grouped:
    print(a, "\n", subset, "\n")

# 1 
#     a  b
# 0  1  0
# 1  1  1 

# 2 
#     a  b
# 2  2  2
# 3  2  3 

# 3 
#     a  b
# 4  3  4
# 5  3  5