Pandas中列赋值、datetime列重命名及避免新增列问题
问题1:为已有列批量赋值1且不新增列
你遇到的新增列问题,大概率是列名匹配出错了——Pandas对列名的大小写、空格甚至特殊字符都严格区分,比如'Highlight'和'highlight'会被当成完全不同的两列;或者你误以为存在的列,其实根本没在user_char里。
解决步骤很简单:
- 先确认目标列的真实名称:运行
print(user_char.columns)查看DataFrame的所有列名,核对你要修改的列名是否完全一致(包括大小写、空格)。 - 确认无误后直接赋值:
这条语句会直接覆盖原有列的所有行值为1,绝对不会新增列。如果之前误操作新增了多余列,用user_char['你的高亮列名'] = 1user_char = user_char.drop(columns=['错误列名'])就能删掉它。
问题2:处理带时间戳的datetime列(保留日期+重命名)
假设你的datetime列当前叫'timestamp_col'(替换成你的实际列名),我们需要两步搞定:把时间戳转成纯日期,同时修改列名。
步骤1:确保列是datetime类型(如果还不是的话)
如果你的列目前是字符串或者其他格式,先转成datetime类型:
import pandas as pd user_char['timestamp_col'] = pd.to_datetime(user_char['timestamp_col'])
步骤2:转换值为纯日期
根据你的需求选一种:
- 想得到
datetime.date类型的纯日期对象:user_char['timestamp_col'] = user_char['timestamp_col'].dt.date - 想保留
datetime64类型(仅保留日期部分,时间自动设为00:00:00):user_char['timestamp_col'] = user_char['timestamp_col'].dt.normalize()
步骤3:重命名列
把列名改成你想要的名称(比如'日期'):
user_char = user_char.rename(columns={'timestamp_col': '日期'})
嫌步骤多?也可以合并成一行简洁操作:
user_char = user_char.rename(columns={'timestamp_col': '日期'}).assign(日期=lambda x: x['日期'].dt.normalize())
内容的提问来源于stack exchange,提问作者Mit Shah
相关产品推荐
相关产品推荐

