如何将Pandas DataFrame日期列的行值替换为qid格式并拆分多行
解决方法
先修正你原数据里的语法小问题(少了一个闭合引号),然后按以下步骤处理:
- 拆分逗号分隔的日期到独立行:用
str.split(',')把每个单元格的日期字符串拆成列表,再用explode()方法将列表展开为单独行。 - 生成递增的qid标识:重置DataFrame的索引,然后基于新索引生成
qid:序号格式的字符串。
完整代码如下:
import pandas as pd # 修正后的原数据 data = {'date': ['1/1/2022', '1/2/2022,1/3/2022']} df = pd.DataFrame(data) # 拆分多行 df = df.assign(date=df['date'].str.split(',')).explode('date', ignore_index=True) # 替换为qid格式 df['date'] = df.index.map(lambda x: f'qid:{x}') print(df)
运行后输出的结果就是你要的目标DataFrame:
date 0 qid:0 1 qid:1 2 qid:2
步骤解释
df.assign(date=df['date'].str.split(',')):把每个日期单元格按逗号分割成列表,比如'1/2/2022,1/3/2022'变成['1/2/2022', '1/3/2022']。explode('date', ignore_index=True):将列表中的每个元素拆成单独一行,同时重置索引避免混乱。df.index.map(lambda x: f'qid:{x}'):利用DataFrame的索引(从0开始递增)直接生成带序号的qid字符串,简单高效。
内容的提问来源于stack exchange,提问作者Tartaglia
相关产品推荐
相关产品推荐

