python - 正则表达式匹配多个前缀,解压到列
问题描述
对正则表达式采取本系列的任何建议
import pandas as pd
import numpy as np
data = [
'Apple: very tasty',
'Banana: Unpleasant',
'Apple: quite nice Banana: not bad either',
'',
]
ser = pd.Series(data=data)
进入这个产生的DataFrame?
pd.DataFrame(data=[
['very tasty', np.nan],
[np.nan, 'Unpleasant'],
['quite nice', 'not bad either'],
[np.nan, np.nan],
], columns = ['Apple', 'Banana'])
如果 Apple 和 Banana 存在,它们总是按 Apple、Banana 的顺序排列,并用双空格隔开。
解决方案
你可以这样做:
df_out = pd.DataFrame(df.values.reshape(-1,2),
index=np.repeat(np.arange(df.shape[0]),df.shape[1]//2))
df_out = pd.DataFrame()
df = ser.str.split(':|\s\s',expand=True)
对于 df.groupby(df.columns // 2, axis=1) 中的 n,g:
df_out = pd.concat([df_out, pd.DataFrame(g.values)])
df_out.set_index(0, append=True)[1].unstack().dropna(1, how='all')
输出:
Apple Banana
0 very tasty NaN
1 NaN Unpleasant
2 quite nice not bad either
3 NaN NaN
推荐阅读
- c# - 如何在中间件中自动生成基于资源的 URI 以供前端使用?
- excel - 有选择地将行从一个工作表复制到新工作表上的新表
- dataframe - 在具有相同标题名称的单个数据框中按行连接多个文件
- ruby-on-rails - 在 Rails 中实现 Bootstrap 主题
- github - 在 GitHub 上更改或删除提交消息?
- jquery - 如何在除一个 div 之外的所有 div 中选择所有 div 类
- mysql - SQL 来自同一列的多个值与内部连接
- javascript - 忽略单词并删除区分大小写和空格以匹配
- python - 如何在 lambda 函数中使用时间序列索引
- function - 我无法让 CSS 应用于打印表