将列重命名为现有的Pandas Dataframe时出错

时间:2018-10-31 13:49:28

标签: python pandas dataframe indexing

这个问题基本上与以下问题有关:notebook-memory-usage,原始帖子太旧了,因此我认为开始新帖子更好。

这是代码的一部分:

def get_proc_info():
    # memory info from psutil.Process
    df_mem = []
    ....
    df_mem = pd.DataFrame(df_mem)
    df_mem.columns = ['user', 'pid', 'memory_GB', 'kernel_ID']
    return df_mem, ports

df_mem.columns = ['user', 'pid', 'memory_GB', 'kernel_ID']处的错误如下:

  

get_proc_info中的文件“ ./notebook_mem_usage.py”,第64行       df_mem.columns = ['user','pid','memory_GB','kernel_ID']

     

ValueError:长度不匹配:预期轴包含0个元素,新值   有四个元素

如果有人能给我更多的了解,我们将不胜感激,在此先感谢您。

1 个答案:

答案 0 :(得分:1)

在重命名列之前,这些列需要预先存在。考虑一个空的数据框:

df = pd.DataFrame()

print(df.columns)

Index([], dtype='object')

您不能在大小为0的数组中容纳4个值。因此,您看到ValueError。您有两种选择:

在实例化时指定列

pd.DataFrame构造函数具有一个columns参数:

df = pd.DataFrame(columns=['user', 'pid', 'memory_GB', 'kernel_ID'])

使用一个包含列的空数据框来连接

创建一个空的数据框并加入一个新的数据框:

df = pd.DataFrame()
df = df.join(pd.DataFrame(columns=['user', 'pid', 'memory_GB', 'kernel_ID']))