如何拆分字符串并为Pandas DataFrame分配唯一ID?附示例数据
解决方案:拆分字符串并为Pandas DataFrame分配唯一ID
针对你的需求,我分两种常见场景给出具体实现方案,你可以根据实际情况灵活选用:
场景1:将输入字符串拆分为DataFrame行并分配唯一ID
如果你的输入是一段用特定分隔符(比如换行、逗号)分隔的长字符串,或是一组独立的字符串列表,我们可以先拆分内容,再生成带唯一标识的DataFrame。
示例代码:
import pandas as pd import uuid # 示例输入字符串(用换行符分隔多条消息) input_str = """@Zuora wants to help @Network4Good with Hurricane and hurriacane... @ztrip please help spread the good word on hello and hello... #ZSwaggers @Zendaya96 did this,you should too. You...""" # 按换行符拆分字符串为单个消息的列表 message_list = input_str.split('\n') # 生成唯一ID:两种可选方式 # 方式1:全局唯一的字符串ID(适合跨系统场景) unique_ids = [str(uuid.uuid4()) for _ in message_list] # 方式2:自增整数ID(适合仅需当前DataFrame内唯一的场景) # unique_ids = list(range(1, len(message_list)+1)) # 创建最终DataFrame df = pd.DataFrame({ 'DOCUMENT_ID': unique_ids, 'MESSAGE': message_list }) print(df.head())
关键说明:
- 用
split()方法根据实际分隔符拆分输入内容,比如逗号分隔就用split(', ')。 - 两种ID生成方式各有优势:uuid保证全局唯一,自增整数更简洁直观。
场景2:对现有DataFrame的MESSAGE列拆分并分配新唯一ID
如果已经有类似你给出的示例DataFrame,需要把每条MESSAGE里的内容(比如按空格、@提及拆分)展开为单独行,同时为每个新行分配唯一ID,可以参考下面的实现:
示例代码:
import pandas as pd import uuid # 模拟你提供的示例DataFrame data = { 'MESSAGE': [ "@Zuora wants to help @Network4Good with Hurricane and hurriacane...", "@ztrip please help spread the good word on hello and hello...", "#ZSwaggers @Zendaya96 did this,you should too. You..." ], 'DOCUMENT_ID': [263403828328665088, 264142543883739136, 265122997348753408] } df = pd.DataFrame(data) # 拆分MESSAGE列(这里按空格拆分,可自定义分隔符) # 拆分后展开为多行,保留原文档ID,同时生成新唯一ID df_expanded = df.assign(MESSAGE=df['MESSAGE'].str.split()).explode('MESSAGE', ignore_index=True) df_expanded['NEW_UNIQUE_ID'] = [str(uuid.uuid4()) for _ in range(len(df_expanded))] print(df_expanded.head())
关键说明:
str.split()可传入自定义分隔符,比如按@拆分就用str.split('@')。explode()方法会把拆分后的列表展开为独立行,ignore_index=True用来重置行索引,避免索引混乱。- 保留原
DOCUMENT_ID列可以追踪每个拆分内容来自哪条原始消息。
内容的提问来源于stack exchange,提问作者lpt
相关产品推荐
相关产品推荐

