将TSV文件数据转换为dataframe,可以推送到数据库

问题描述 投票:0回答:1

我们有保存 IOT 数据的 TSV 文件,想要使用 pandas 转换为表状结构。我研究过 TSV 数据,类似于下面给出的,逻辑是这样的

  1. 读取文件
  2. 添加新列名称
  3. 转置
  4. 重新索引

正如所解释的那样,这有点具有挑战性,col1 到 col3 是维度数据,其余的是事实数据

tsv 文件数据如下

col1 qweqweq
第 2 栏 345435
第三栏 01/01/2024 35:08:09
第 4 栏 1
第 5 栏 0
第 4 栏 0
第 5 栏 0
第 4 栏 1
第 5 栏 1
第 4 栏 0
第 5 栏 1

想要投影为类似表格的结构

col1 col2 col3 col4 第5栏
qweqweq 345435 2024年1月1日35:08:09 1 0
qweqweq 345435 2024年1月1日35:08:09 0 0
qweqweq 345435 2024年1月1日35:08:09 1 1
qweqweq 345435 2024年1月1日35:08:09 0 1

每个 IOT 文件中的 col4 和 col5 可能不同。如何用python、pandas实现?

python pandas csv file
1个回答
0
投票

假设您可以依靠“col1”来定义组,则可以在删除行后使用

pivot
,并且
groupby.ffill

df = (pd.read_csv('your_file.tsv', sep='\t', header=None)
        .assign(index=lambda x: x[0].eq('col1').cumsum(),
                n=lambda x: x.groupby(['index', 0]).cumcount())
        .pivot(index=['index', 'n'], columns=0, values=1)
        .groupby(level='index').ffill()
        .reset_index(drop=True)
     )

输出:

      col1    col2                 col3 col4 col5
0  qweqweq  345435  01/01/2024 35:08:09    1    0
1  qweqweq  345435  01/01/2024 35:08:09    0    0
2  qweqweq  345435  01/01/2024 35:08:09    1    1
3  qweqweq  345435  01/01/2024 35:08:09    0    1
© www.soinside.com 2019 - 2024. All rights reserved.