Python 将CSV中的大纲格式转换为两列

Python 将CSV中的大纲格式转换为两列,python,pandas,Python,Pandas,我有以下格式的CSV文件中的数据(数据框中的一列)。这本质上类似于Word文档中的大纲,我在这里显示的标题是字母,是主标题,而作为数字的项目是副标题: A 一, 二, 三, B 一, 二, C 一, 二, 三, 四, 我想将其转换为以下格式(数据帧中的两列): A 1 A 2 A 3 B 1 B 2 C1 C2 C3 C4 我正在使用pandasread\u csv将数据转换为dataframe,并尝试通过for循环重新格式化,但由于数据重复并被覆盖,我遇到了困难。例如,a3将被c3覆盖

我有以下格式的CSV文件中的数据(数据框中的一列)。这本质上类似于Word文档中的大纲,我在这里显示的标题是字母,是主标题,而作为数字的项目是副标题:

  • A
  • 一,
  • 二,
  • 三,
  • B
  • 一,
  • 二,
  • C
  • 一,
  • 二,
  • 三,
  • 四,
我想将其转换为以下格式(数据帧中的两列):

  • A 1
  • A 2
  • A 3
  • B 1
  • B 2
  • C1
  • C2
  • C3
  • C4
我正在使用
pandas
read\u csv
将数据转换为
dataframe
,并尝试通过for循环重新格式化,但由于数据重复并被覆盖,我遇到了困难。例如,
a3
将被
c3
覆盖(当只需要一个实例时,会导致两个
c3
实例,并且在循环中丢失
a3
)。最好的方法是什么

对格式错误表示歉意,本网站新手。

使用:

#if no csv header use names parameter
df = pd.read_csv(file, names=['col'])

df.insert(0, 'a', df['col'].mask(df['col'].str.isnumeric()).ffill())

df = df[df['a'] != df['col']]
print (df)
    a col
1   A   1
2   A   2
3   A   3
5   B   1
6   B   2
8   C   1
9   C   2
10  C   3
11  C   4
详细信息

检查值:

True
替换为
NaN
s,并向前填充缺少的值:

print (df['col'].mask(df['col'].str.isnumeric()).ffill())
0     A
1     A
2     A
3     A
4     B
5     B
6     B
7     C
8     C
9     C
10    C
11    C
Name: col, dtype: object
通过以下方式将新列添加到第一个位置:

最后通过删除具有相同值的行

print (df['col'].mask(df['col'].str.isnumeric()).ffill())
0     A
1     A
2     A
3     A
4     B
5     B
6     B
7     C
8     C
9     C
10    C
11    C
Name: col, dtype: object
df.insert(0, 'a', df['col'].mask(df['col'].str.isnumeric()).ffill())
print (df)
    a col
0   A   A
1   A   1
2   A   2
3   A   3
4   B   B
5   B   1
6   B   2
7   C   C
8   C   1
9   C   2
10  C   3
11  C   4