快速替换column的方法(数据量较大)

各位牛人们,想问一下:

我现在有个很大的数据(大概10G),然后有一列数据给的是unix time,读取csv的时候将它作为object(要不会自动科学计数法),现在想把他转换为正常的时间Y-m-d H:M:S(重新列一行或者直接替代原有行都可以),我自己用的是while loop,时间太长了,基本10min才跑1/60的数据,想问下更快的替换方式!谢谢!

img

python不适合这种大量的操作,它本身就是很慢的语言,用C/C++

分块读取处理

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案: 在处理大数据集时,使用循环来逐行替换时间列的确效率较低。为了更快地替换大数据集中的时间列,可以使用Pandas和Numpy库中的矢量化操作,以及利用Unix时间戳的特性来进行优化。

    以下是一种可能的解决方案:

    1. 使用Pandas库读取CSV文件,并将时间列指定为Unix时间戳的对象类型。
    import pandas as pd
    
    # 读取CSV文件
    df = pd.read_csv('your_data.csv')
    
    # 将时间列指定为Unix时间戳的对象类型
    df['timestamp_column'] = pd.to_datetime(df['timestamp_column'], unit='s')
    
    1. 将Unix时间戳转换为标准的日期时间格式,并替换原有列或新增一列。
    # 转换为标准的日期时间格式
    df['timestamp_column'] = df['timestamp_column'].dt.strftime('%Y-%m-%d %H:%M:%S')
    
    # 替换原有列
    # df['timestamp_column'] = df['timestamp_column'].dt.strftime('%Y-%m-%d %H:%M:%S')
    
    # 或新增一列
    # df['new_timestamp_column'] = df['timestamp_column'].dt.strftime('%Y-%m-%d %H:%M:%S')
    
    1. 将处理后的数据保存到新的CSV文件中。
    # 保存到新的CSV文件中
    df.to_csv('new_data.csv', index=False)
    

    上述代码中,pd.to_datetime函数将Unix时间戳列转换为Pandas中的datetime类型,从而可以使用dt.strftime函数将其转换为指定的日期时间格式。替换原有列或新增一列的方法可根据实际需求自行选择。

    请注意,处理大数据集时,可能需要较长的时间。如果内存不足以一次性读取整个数据集,可以考虑使用Pandas的分块处理功能(chunking),逐块读取和替换时间列。

    如果以上方法仍无法满足性能需求,可以考虑使用Spark等分布式计算框架,将数据集分布式处理以提高效率。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^