设置索引的方式有什么不同

时间:2016-08-03 07:50:29

标签: python pandas dataframe

我如何设置数据框的索引有什么区别?

HttpClient client = new HttpClient();
String url = "http://www.example.com/README.txt";
// Create a method instance.
GetMethod method = new GetMethod(url);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
            new DefaultHttpMethodRetryHandler(3, false));
byte[] responseBody = method.getResponseBody();
String fileContents = new String(responseBody);

我收到以下错误:

data = [['A', 5], ['B', 6], ['C', 7]]
df = pd.DataFrame(data=data, columns=['key', 'amount'], index= ['key'])

如果我按照以下方式正常工作:

Shape of passed values is (2, 3), indices imply (2, 1)

我设置索引的方式之间有什么区别?

2 个答案:

答案 0 :(得分:2)

一方面,pd.Dataframe期望index是一个数组,并将用作行的索引,例如:

In [17]: data
Out[17]: [['A', 5], ['B', 6], ['C', 7]]

In [18]: df = pd.DataFrame(data=data, index=['a', 'b', 'c'])

In [19]: df
Out[19]: 
   0  1
a  A  5
b  B  6
c  C  7

这不是你想要达到的目标。

另一方面,DataFrame.set_index将一个(或多个)列设置为变为索引,这是您在此情况下要执行的操作。

答案 1 :(得分:1)

第一种方式:

data = [['A', 5], ['B', 6], ['C', 7]]
df = pd.DataFrame(data=data, columns=['key', 'amount'], index= ['key'])

您将索引指定为'key'的单个值。换句话说,将有一行标签为'key'

第二种方式:

df2 = pd.DataFrame(data=data, columns=['key', 'amount'])
df2.set_index(['key'], inplace=True)

您已指定名为'key'的列,其中可能包含许多行。您随后指示df2使其索引等于名为'key'的整个列。