[英]How to split by range of characters pandas dataframe string into separate rows
你能帮我用下面的代码吗? 我会尽量做到简洁明了。
df_split = df_excelsb_melt[df_excelsb_melt['SB'].str.len() > 7] df_split['SB'].str.len().unique()
输出是:
数组([14, 21, 28], dtype=int64)
3)我试图做什么:
explode(df_split.assign(SB=df_split.SB.str.split(range(0,df_split.SB.str.len(),7)),'SB')
输出是:SyntaxError: unexpected EOF while parsing
如上所述,代码应该将 SB 列拆分为 7 个字符。
提前致谢。
编辑
使用regex
的简单解决方案:
import re
import pandas as pd
data = [{'MOD': 42334,
'SB': '38-101138-3015',
'AC': 'AAA',
'COMPLIANCE': 'NOT INCORPORATED'},
{'MOD': 43765,
'SB': '49-300949-3012',
'AC': 'AAA',
'COMPLIANCE': 'NOT INCORPORATED'}]
df = pd.DataFrame(data)
df['SB'] = df['SB'].apply(lambda x : re.findall('.{1,7}', x))
df = df.explode('SB')
Output
| MOD | SB | AC | COMPLIANCE |
|------:|:--------|:-----|:-----------------|
| 42334 | 38-1011 | AAA | NOT INCORPORATED |
| 42334 | 38-3015 | AAA | NOT INCORPORATED |
| 43765 | 49-3009 | AAA | NOT INCORPORATED |
| 43765 | 49-3012 | AAA | NOT INCORPORATED |
原液
结合df.iterrows()
和regex
:
output = []
#Loop through the records
for record in df.to_dict('records'):
#Find the SB codes with some regex logic
for x in re.findall('.{1,7}', record['SB']):
temp = record.copy()
temp['SB'] = x
#Append to the output list
output.append(temp)
new_df = pd.DataFrame(output)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.