如何将numpy.ndarray转为字符串并按分隔符拆分元素子串
拆分数组元素并筛选DataFrame子集
1. 拆分数组中的时间周期元素
你的Year_Start_End数组里的每个元素格式为年份_时间段,可以用split('_', 1)方法仅拆分一次,将元素拆成年份和时间段两个子串:
# 遍历数组拆分每个元素 for period in Year_Start_End: year, half_year = period.split('_', 1) # 直接使用拆分后的year和half_year变量 print(f"年份: {year}, 时间段: {half_year}")
split('_', 1)的第二个参数1确保只按第一个下划线拆分,避免误拆分Jan_Jun内部的下划线。
2. 用拆分后的子串获取DataFrame子集
有两种实用方式可以实现:
方式一:遍历拆分结果直接筛选
循环处理每个时间周期,拆分后通过布尔索引筛选对应子集:
for period in Year_Start_End: year, half_year = period.split('_', 1) # 筛选同时匹配年份和时间段的数据 subset = data_copy[ (data_copy['Year_Start_End'].str.startswith(year)) & (data_copy['Year_Start_End'].str.endswith(half_year)) ] # 若需求是按完整周期单独取数,可直接匹配period # subset = data_copy[data_copy['Year_Start_End'] == period] # 对子集执行后续操作,比如查看行数 print(f"{year}年{half_year}的子集行数: {len(subset)}")
方式二:新增列后灵活筛选
先给data_copy新增年份和时间段列,后续可重复使用这两列进行各种筛选:
# 拆分Year_Start_End列,生成两个新列 data_copy[['Year', 'Half_Year']] = data_copy['Year_Start_End'].str.split('_', 1, expand=True) # 示例:筛选2016年上半年的数据 subset_2016_h1 = data_copy[(data_copy['Year'] == '2016') & (data_copy['Half_Year'] == 'Jan_Jun')] # 示例:筛选所有年份的上半年数据 all_first_half = data_copy[data_copy['Half_Year'] == 'Jan_Jun']
内容的提问来源于stack exchange,提问作者Dushyant Sapre
相关产品推荐
相关产品推荐

