如何使用CSV来源的pandas dataframe批量修改目标dataframe指定列值
Pandas DataFrame按外部CSV时间值批量修改指定列值
前置准备:读取时间CSV文件
你用到的时间CSV没有表头,读取时需要指定header=None,示例代码如下:
import pandas as pd # 替换为你实际的时间CSV文件路径 timestamp = pd.read_csv('time_list.csv', header=None)
方案1:你已实现的遍历方案(功能正常可用)
你写的遍历逻辑可以正确满足需求,只要提前完成上面的CSV读取步骤即可正常运行:
for (index_label, row_series) in timestamp.iterrows(): tables.loc[tables.Date == row_series.values[0], 'Valuable'] = 1
方案2:更高性能的向量化实现(推荐)
如果你的数据量较大,遍历的性能会低于pandas原生向量化操作,推荐用isin方法一次性匹配所有目标时间,代码更简洁效率也更高:
# 提取所有目标时间为列表 target_time_list = timestamp[0].tolist() # 批量匹配修改Valuable列值 tables.loc[tables['Date'].isin(target_time_list), 'Valuable'] = 1
注意事项
- 要保证
tables的Date列和时间CSV中的时间格式完全一致,要么同为字符串格式,要么同为datetime格式,避免匹配失效。如果需要统一为datetime格式,读取时间CSV时可以添加parse_dates=[0]参数自动转换。
内容的提问来源于stack exchange,提问作者Renke Ludwig
相关产品推荐
相关产品推荐

