如何在Anaconda中用Pandas将分号分隔的单列CSV拆分为多列?
嘿,这个需求完全可以实现!不管是加载文件时直接拆分多列,还是先加载成单列再处理,Pandas都能轻松搞定。针对你提到的太阳黑子数据,我给你两种具体的实现方案:
方案一:加载时直接拆分多列
因为你的文件是用;作为分隔符的TXT文件,Pandas的read_csv函数其实完全支持处理这类文件,只需要指定分隔符参数就能一步到位拆分多列:
import pandas as pd # 直接加载并按分号拆分列,header=None表示文件没有表头 df = pd.read_csv('sunspot_data.txt', sep=';', header=None) # 给拆分后的列命名(对应太阳黑子数据的标准字段) df.columns = ['Year', 'Month', 'Day', 'Decimal_Date', 'Sunspot_Number', 'Std_Dev', 'Observations', 'Flag']
这个方法最高效,不需要额外的后续处理,适合你提前明确知道分隔符的场景。
方案二:加载后再拆分列
如果已经不小心把数据加载成了单列(比如没指定分隔符),也可以用字符串拆分功能来补救:
import pandas as pd # 先加载成单列(假设此时整个行数据都在一列里) df = pd.read_csv('sunspot_data.txt', header=None, names=['Raw_Data']) # 按分号拆分单列数据,expand=True会自动把拆分结果转为多列 split_df = df['Raw_Data'].str.split(';', expand=True) # 同样给列命名 split_df.columns = ['Year', 'Month', 'Day', 'Decimal_Date', 'Sunspot_Number', 'Std_Dev', 'Observations', 'Flag'] # 可选:将数值型字段转换为对应数据类型(避免默认的字符串类型) split_df[['Year', 'Month', 'Day', 'Sunspot_Number', 'Observations']] = split_df[['Year', 'Month', 'Day', 'Sunspot_Number', 'Observations']].astype(int) split_df[['Decimal_Date', 'Std_Dev']] = split_df[['Decimal_Date', 'Std_Dev']].astype(float)
这个方案灵活度更高,适合加载后才发现需要拆分列的情况。
两种方案都能完美处理你的太阳黑子数据,根据自己的实际情况选就行~
内容的提问来源于stack exchange,提问作者Steven Matthews
相关产品推荐
相关产品推荐

