禁用索引pandas数据帧

时间:2013-08-17 15:00:11

标签: python pandas

如何在pandas数据框中删除或禁用索引?

我正在从“python for data analysis”一书中学习大熊猫,我已经知道我可以使用dataframe.drop来删除一列或一行。但我没有找到任何关于禁用所有指数的内容。

5 个答案:

答案 0 :(得分:16)

df.values为您提供没有索引的原始NumPy ndarray

>>> df
   x   y
0  4  GE
1  1  RE
2  1  AE
3  4  CD
>>> df.values
array([[4, 'GE'],
       [1, 'RE'],
       [1, 'AE'],
       [4, 'CD']], dtype=object)

没有索引你不能拥有DataFrame,它们是DataFrame的全部要点:)

但为了清楚起见,此操作不是 inplace

>>> df.values is df.values
False

DataFrame将数据保存在按类型分组的二维数组中,因此当您需要整个数据框时,它必须找到所有dtypes的LCD并构建该类型的2D数组。

要使用旧数据框中的值来实例化新数据框,只需将旧的DataFrame传递给新的构造函数,并且不会复制任何数据,将重用相同的数据结构:

>>> df1 = pd.DataFrame([[1, 2], [3, 4]])
>>> df2 = pd.DataFrame(df1)
>>> df2.iloc[0,0] = 42
>>> df1
    0  1
0  42  2
1   3  4

但您可以明确指定copy参数:

>>> df1 = pd.DataFrame([[1, 2], [3, 4]])
>>> df2 = pd.DataFrame(df1, copy=True)
>>> df2.iloc[0,0] = 42
>>> df1
   0  1
0  1  2
1  3  4

答案 1 :(得分:3)

d.index = range(len(d))

执行简单的就地索引重置 - 即它删除所有现有索引,并添加一个基本整数1,这是Pandas Dataframe可以拥有的最基本的索引类型。

答案 2 :(得分:1)

我遇到了类似的问题,试图从无索引的CSV中获取DataFrame并将其写回另一个文件。

我想出了以下内容:

import pandas as pd
import os

def csv_to_df(csv_filepath):
    # the read_table method allows you to set an index_col to False, from_csv does not
    dataframe_conversion = pd.io.parsers.read_table(csv_filepath, sep='\t', header=0, index_col=False)
    return dataframe_conversion

def df_to_excel(df):
    from pandas import ExcelWriter
    # Get the path and filename w/out extension
    file_name = 'foo.xlsx'
    # Add the above w/ .xslx
    file_path = os.path.join('some/directory/', file_name)
    # Write the file out
    writer = ExcelWriter(file_path)
    # index_label + index are set to `False` so that all the data starts on row
    # index 1 and column labels (called headers by pandas) are all on row index 0.
    df.to_excel(writer, 'Attributions Detail', index_label=False, index=False, header=True)
    writer.save()

答案 3 :(得分:0)

我有一个可以帮助一些人的功能。我在python中以下列方式将csv文件与标题组合在一起:

    def combine_csvs(filedict, combined_file):
        files = filedict['files']
        df = pd.read_csv(files[0])
        for file in files[1:]:
            df = pd.concat([df, pd.read_csv(file)])
        df.to_csv(combined_file, index=False)
        return df

可以根据需要使用尽可能多的文件。将此称为:

    combine_csvs(dict(files=["file1.csv","file2.csv", "file3.csv"]), 'output.csv')

或者如果你在python中读取数据帧:

    df = combine_csvs(dict(files=["file1.csv","file2.csv"]), 'output.csv')

combine_csvs fucntion不保存索引。如果您需要索引,请使用' index = True'代替。

答案 4 :(得分:0)

此外,如果您使用df.to_excel的{​​{1}}功能(即将其写入Excel工作表的位置),则可以在参数中指定pd.ExcelWriter

创建Excel编写器:

index=False

我们有一个名为writer = pd.ExcelWriter(type_box + '-rules_output-' + date_string + '.xlsx',engine='xlsxwriter') 的列表:

lines