在Pandas行中生成逗号分隔字符串的组合。

10 浏览
0 Comments

在Pandas行中生成逗号分隔字符串的组合。

我有一个类似这样的数据框:

ID, Values
1   10, 11, 12, 13
2   14
3   15, 16, 17, 18

我想创建一个新的数据框,类似这样:

ID COl1 Col2
1  10   11
1  11   12
1  12   13
2  14
3  15   16
3  16   17
3  17   18

请告诉我如何实现这个?注意:输入数据框中Values列的行是字符串类型的。

0
0 Comments

生成逗号分隔字符串的组合

问题的出现原因:在pandas的一行中,需要生成一个逗号分隔字符串的组合。

解决方法:首先创建一个函数,该函数将从初始的逗号分隔字符串中返回成对的数字。然后创建一个新的数据框,使用lambda函数将原始数据框中的值应用于该函数,然后使用stack()函数将结果展开为多列,然后使用fillna("")函数填充缺失值并重置索引,最后将新的数据框与原始数据框连接起来。最后,将新的数据框的列名修改为'ID'、'Col 1'和'Col 2'。最终的输出结果是一个包含所有组合的数据框。

0
0 Comments

问题的出现原因是需要将一个逗号分隔的字符串生成组合,并将生成的组合作为新的一行添加到pandas的DataFrame中。解决方法是使用列表推导式和flatten,将每个字符串分割成子字符串,并将每个子字符串与ID值一起添加到新的DataFrame中。

代码中的`chunks`函数是一个生成器函数,用于将可迭代对象分成固定大小的组块。它使用`deque`来存储值,并在需要时自动删除多余的元素。

在主代码中,使用列表推导式和`chunks`函数来生成组合。通过使用`zip`函数将`df['ID']`和`df['Values']`进行迭代,每次迭代将字符串分割成子字符串,并将每个子字符串与ID值一起添加到新的DataFrame中。

最终生成的DataFrame的列名分别为'ID','Col1'和'Col2'。如果某一行的子字符串数量不足2,则对应的列将填充为空字符串。

整体上,这段代码通过使用列表推导式和自定义的`chunks`函数,以较少的代码行数实现了将逗号分隔的字符串生成组合并添加到pandas的DataFrame中的功能。

0