微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数据帧拆分为多个数据集

如何解决将数据帧拆分为多个数据集

我有一个数据框,它有索引列和 ds_value 列,就像下面打印的 df

index   ds_value <br>
1       SEG1|CA|90025|34|~SEG2|2|3|10150|~TITLE|Test| <br>
2       SEG1|NV|90567|50|~SEG24|4|5|54678|~JOB|None|<br>

如何找到每一行上的每个段类型,并根据为每个段分隔的管道分割数据行的段类型。段可以是相同的名称,也可以是不同的名称,每个段由 ~ 字符分隔 在这种情况下,我在第一行有 SEG1、SEG2 和 TITLE
和第二行的 SEG1、SEG24 和 JOB。

每个 Segment 可以在每个数据帧中,例如 Df1、df2、df3...等,因为我会将这些数据帧插入到 sql server

请帮助我

这是我期待的

df1: SEG1 <br>
index   0   1   2   3      <br>
1   SEG1    CA  90025   34 <br>
2   SEG1    NV  90567   50 <br>

df2 : SEG2<br>
index   0   1   2   3   <br>
1   SEG2    2   3   10150<br>


df3 :  TITLE<br>
index           0          1    <br>
1               TITLE       Test    <br>

df4 :  SEG24<br>
index     0     1     2   3 <br>
2      SEG24    4   5   54678 <br>

df5 : JOB<br>
index     0     1  <br>
2      JOB     None 

解决方法

您可以先按 ~ 分割,然后按 | 分割,因此分割值的数量无关紧要,只要分隔符值以 ~ 开头(不是如果第一个不以 ~ 开头,则会出现问题:

s = df.ds_value.apply(lambda x: [x.strip('|') for x in x.split('~')])
dfs = [s.str[i].str.split('|',expand=True) for i in range(len(s[0]))]

# Set the original index for each dataframe
for d in dfs:
    d.index = df.index

dfs 的输出(数据框列表):

[
           0   1      2   3
 index                     
 1      SEG1  CA  90025  34
 2      SEG1  NV  90567  50,0  1  2      3
 index                   
 1      SEG2  2  3  10150
 2      SEG2  4  5  54678,0     1
 index             
 1      TITLE  Test
 2      TITLE  None
]

说明:

在此代码的第一行中,您将获得一系列由 ~ 分割的元素(还使用 strip 删除了不必要的末端管道):

0    [SEG1|CA|90025|34,SEG2|2|3|10150,TITLE|Test]
1    [SEG1|NV|90567|50,SEG2|4|5|54678,TITLE|None]
Name: ds_value,dtype: object

在第二行中,我们循环遍历将创建新数据帧的每个组,并通过拆分管道将值扩展为多列。在这一步中,我已经考虑到模式在值之间(相同数量的项目)是一致的,否则可能会失败。

最后,我们放回了列表中所有数据帧的原始索引。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?