使用pandas处理数据未主动赋值列名,列名为何全部变为数字?
问题根源
你代码的最后一行df.columns = list(range(len(df.columns)))是导致所有列名变为数字的直接原因,该行会强制将当前DataFrame的所有列名覆盖为从0开始的连续整数,直接替换了原有的old_index、destination、arr、dep等列名。
修正方案
你仅需要给拆分出的两个城市列命名,不需要全量修改所有列名,修正后的代码如下:
import pandas as pd df = pd.read_csv('FlightDistanceTest.csv') df.rename(columns={'Normalised City Pair': 'destination'}, inplace=True) split_city = df['destination'].str.split(' - ', expand=True) # 给拆分得到的新列单独命名,不影响原有列 split_city.columns = ['出发城市', '到达城市'] df = pd.concat([df, split_city], axis=1) # 删掉原代码中全量修改列名的行即可
如果你不需要给新列自定义名称,直接删掉原代码最后一行全量修改列名的代码即可,拼接后原有列名会保留,拆分出的新列默认使用0、1作为列名。
内容的提问来源于stack exchange,提问作者RedRum
相关产品推荐
相关产品推荐

