gpt4 book ai didi

python - 将唯一标签添加到选项卡式行

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:18 28 4
gpt4 key购买 nike

我有一个文本文件,其中一些行在一个选项卡上移动,表示它们是主行的子类别。我需要用一个唯一的标签来标记每一行,表示它们属于哪个“组”或类别,以便对每个类别进行统计分析。

我不太确定如何在 Python 中自动执行此操作,因为文件中有数千行。如果不首先移动所有缩进行,我无法将文件转换为 csv,这显然会失去判断每一行属于哪个类别的能力。

编辑:
Here is a screenshot of a sample text file that shows what I am talking about visually.

前 3 行的组标签为“1”,接下来的 2 行的标签为“2”,最后 2 行的标签分别为“3”和“4”。

最佳答案

IIUC,这是一个使用 Pandas 和 itertools.chain 的相对简单的方法:

import pandas as pd
import numpy as np
import io, re, itertools

data = '''
ratio, weight, flags, initialTime, finalTime
15, 0.44, 3, 300500, 400000
42, .31, 2, 900432, 100304
41, .2, 7, 192834, 200048
17, 0.234, 2, 2019481, 2182350
8, .1, 9, 1092834, 1190924
8, 0.241, 2, 2115120, 2159009
10, 0.092, 9, 2011234, 5001234
'''

data = re.sub(r'\t+', '*', data)
df = pd.read_csv(io.StringIO(data))

df.columns = [i.strip('*') for i in df.columns]
df.loc[df['ratio'].str.contains(r'\*'), 'ratio'] = np.nan
df['ratio'] = df['ratio'].ffill()
group_numbers = itertools.chain.from_iterable([[i+1]*v.shape[0] for i, (name,v) in enumerate(df.groupby('ratio', sort=False))])
df['ratio'] = list(group_numbers)
df = df.replace(r'\*', '', regex=True).set_index('ratio')

产量:

      weight  flags initialTime finalTime
ratio
1 0.44 3 300500 400000
1 .31 2 900432 100304
1 .2 7 192834 200048
2 0.234 2 2019481 2182350
2 .1 9 1092834 1190924
3 0.241 2 2115120 2159009
4 0.092 9 2011234 5001234

关于python - 将唯一标签添加到选项卡式行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56842498/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com