python - 数据是包含标题和小节的列,如何拆分它?

标签 python pandas

我有一个如下所示的字符串列表:

'A[title]'
'a'
'b'
'c'
'B[title]'
'd'
'C[title]'
'e'
'f'
...

每个 block 由标有“title”的标题分隔。 我需要将这些 block 分开并按如下格式设置:

'A[title]' ,'a'
'A[title]' ,'b'
'A[title]' ,'c'
'B[title]' ,'d'
'C[title]' ,'e'
'C[title]' ,'f'
...

我目前正在使用 for 循环来完成这项工作,我的代码如下所示:

data=pd.Series(data)

newd = []
for i in data.index:
    if '[' not in data[i]:
        current_title = data[i]
    else:
        newd.append([current_title,data[i]])

这是所需的格式,但我实际上试图避免使用 for 循环。 那么,有没有办法使用内置的 pandas 函数来做到这一点?

最佳答案

您可以使用 str.containsffill

data=data.to_frame('ori')
data['title']=data.ori[data.ori.str.contains('title')]
data=data.ffill().loc[lambda x : x.ori!=x.title]
data
Out[499]: 
  ori     title
1   a  A[title]
2   b  A[title]
3   c  A[title]
5   d  B[title]
7   e  C[title]
8   f  C[title]

关于python - 数据是包含标题和小节的列,如何拆分它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52859688/

相关文章:

python - 使用 python 请求将 0 字节文件上传到 owncloud 挂起

python - 数据库错误 python manage.pysyncdb

python - Pandas 中 float() 的无效文字

Python - pandas 写入 csv 文件时避免拆分字符串列

python - 列表与数据框的交叉连接(笛卡尔积)

python - Pandas 根据现有列的第一个唯一值创建新列

python - 表有多个主键 Django

python - 使用Python读取矩阵文件(mtx): not enough values to unpack

Python-从列表中的数据中添加字符串

Python - 如果列名包含特定字符串,则更改该列中的值,否则值保留