根据字符串列值分割熊猫数据框

佩约

我正在努力尝试将我的数据框拆分为3个新的数据框,当供应商名称更改时会发生拆分。我搜索了现有问题。如何基于列行Pandas&python拆分数据框:基于包含子字符串的列值将数据框拆分为许多数据框已接近,但我无法获得所需的输出。

以下是一个玩具数据集,用于说明我的问题:

df = pd.DataFrame({'Supplier': ['Supplier1', 'Supplier1', 'Supplier2', 'Supplier2', 'Supplier2', 'Supplier3','Supplier3'], 'Class' : ['A', 'A','A','A','A','B','B']})

我尝试了(失败了)

df1 = df.iloc[:df.index[df['Supplier'] == 'Supplier1'].tolist()[0]]
df2 = df.iloc[df.index[df['Supplier'] == 'Supplier2'].tolist()[0]+1:]
df3 = df.iloc[df.index[df['Supplier'] == 'Supplier3'].tolist()[0]+1:]

我想要达到的结果是:

   Supplier Class
0  Supplier1     A
1  Supplier1     A
    Supplier Class
0  Supplier2     A
1  Supplier2     A
2  Supplier2     A
    Supplier Class
0  Supplier3     B
1  Supplier3     B

任何帮助,将不胜感激。谢谢!

更新:使用:

df1 = {i:group for i,group in df.groupby( df['Supplier'].ne(df['Supplier'].shift()).cumsum() )}

给出:

{1:     Supplier Class
0  Supplier1     A
1  Supplier1     A, 2:     Supplier Class
2  Supplier2     A
3  Supplier2     A
4  Supplier2     A, 3:     Supplier Class
5  Supplier3     B
6  Supplier3     B}

我需要拆分为单独的数据框,所以我这样做了:

df3 = pd.DataFrame.from_dict({i:group for i,group in df1.groupby(df1['Supplier'].ne(df1['Supplier'].shift()).cumsum() )},orient='index', columns= ['Class'])

但是它给出了错误

 df3 = pd.DataFrame.from_dict({i:group for i,group in df1.groupby(df1['Supplier'].ne(df1['Supplier'].shift()).cumsum() )},orient='index', columns= ['Class'])
AttributeError: 'dict' object has no attribute 'groupby'
chthonicdaemon

我相信这可以实现您想要的拆分:

groups = [group.reset_index()[['Supplier', 'Class']] for _, group in df.groupby('Supplier')]

您可以通过以下方式获得示例的确切输出

for group in groups:
    print(group)

输出:

    Supplier Class
0  Supplier1     A
1  Supplier1     A
    Supplier Class
0  Supplier2     A
1  Supplier2     A
2  Supplier2     A
    Supplier Class
0  Supplier3     B
1  Supplier3     B

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据字符串列表过滤大熊猫中的数据框

如果熊猫数据框字符串列缺少值,如何将其小写?

为每个熊猫数据框单元格的字符串列表分配唯一值

在熊猫数据框中高效存储大字符串列

如何获取熊猫数据框的字符串列表?

从字符串列表创建熊猫数据框

从分隔的字符串列创建多级索引熊猫数据框

熊猫数据框中的字符串列操作

根据字符串值列对熊猫数据框行进行排序

如何根据熊猫数据框中的字符串值使用 where 条件?

根据熊猫数据框中的值更新字符串中的值

在熊猫数据框中分割字符串

大熊猫:根据某些列的字符串值将数据框拆分为单独的数据框

根据指定列中的字符串值条目是否包含子字符串来分隔熊猫数据框

根据条件熊猫数据框列删除字符串

根据完全匹配的字符串过滤熊猫数据框

熊猫:替换字符串列值

合并缺少值的熊猫字符串列

如何根据熊猫中另一列的值组合字符串列表的行?

根据groupby分割熊猫数据框

检查数据框中的值是否包含字符串列表中的字符串

检查字符串列表是否在熊猫数据框列中

Groupby 并加入带有换行符的字符串列的熊猫数据框

熊猫数据框-具有带有字符串列表的列

如何在熊猫数据框中对齐(左)字符串列?

熊猫子集数据框中的反向字符串列

将数据框中的字典列表转换为字符串列表 - 熊猫

将字符串列表转换为带有类型的熊猫数据框

如何在熊猫数据框的列中使用字符串列表