使用Pandas处理字符串时如何保留列名Order_Number?
解决方法
你的问题出在最后一步:df_test['Order_Number'].str[4:]返回的是Series(一维序列),而非DataFrame,所以输出时看不到原列名。要保留列名且不用手动添加,有几种简便方案:
方案1:直接修改原DataFrame的列
不需要替换整个df_test,直接在选中的列上做字符串截取,保留DataFrame结构和列名:
df_test = pd.read_excel(r'C:\...\test.xlsx') df_test = df_test.filter(like='Order_Number', axis=1) df_test['Order_Number'] = df_test['Order_Number'].str[4:] df_test.head()
方案2:用apply保持DataFrame结构
如果习惯链式操作,用apply对列批量处理,返回结果仍是带列名的DataFrame:
df_test = pd.read_excel(r'C:\...\test.xlsx') df_test = df_test.filter(like='Order_Number', axis=1).apply(lambda col: col.str[4:]) df_test.head()
方案3:把Series转回DataFrame
如果已经得到Series,用to_frame()方法转成DataFrame,自动保留原列名:
df_test = pd.read_excel(r'C:\...\test.xlsx') df_test = df_test.filter(like='Order_Number', axis=1) df_test = df_test['Order_Number'].str[4:].to_frame() df_test.head()
内容的提问来源于stack exchange,提问作者Squary94
相关产品推荐
相关产品推荐

