Как получить данные, индексированные по дате из panda [duplicate]

Вы можете пойти динамично; например:

using System;

namespace TypeCaster
{
    class Program
    {
        internal static void Main(string[] args)
        {
            Parent p = new Parent() { name = "I am the parent", type = "TypeCaster.ChildA" };
            dynamic a = Convert.ChangeType(new ChildA(p.name), Type.GetType(p.type));
            Console.WriteLine(a.Name);

            p.type = "TypeCaster.ChildB";
            dynamic b = Convert.ChangeType(new ChildB(p.name), Type.GetType(p.type));
            Console.WriteLine(b.Name);
        }
    }

    internal class Parent
    {
        internal string type { get; set; }
        internal string name { get; set; }

        internal Parent() { }
    }

    internal class ChildA : Parent
    {
        internal ChildA(string name)
        {
            base.name = name + " in A";
        }

        public string Name
        {
            get { return base.name; }
        }
    }

    internal class ChildB : Parent
    {
        internal ChildB(string name)
        {
            base.name = name + " in B";
        }

        public string Name
        {
            get { return base.name; }
        }
    }
}
36
задан Burhan Khalid 23 July 2016 в 13:59
поделиться

2 ответа

Да, с помощью set_index вы можете сделать Locality ваш индекс строки.

data.set_index('Locality', inplace=True)

Если inplace=True не указана, set_index возвращает измененный файл данных как результат.

Пример:

> import pandas as pd
> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
                     ['ABERFELDIE', 534000, 600000]],
                    columns=['Locality', 2005, 2006])

> df
     Locality    2005    2006
0  ABBOTSFORD  427000  448000
1  ABERFELDIE  534000  600000

> df.set_index('Locality', inplace=True)
> df
              2005    2006
Locality                  
ABBOTSFORD  427000  448000
ABERFELDIE  534000  600000

> df.loc['ABBOTSFORD']
2005    427000
2006    448000
Name: ABBOTSFORD, dtype: int64

> df.loc['ABBOTSFORD'][2005]
427000

> df.loc['ABBOTSFORD'].values
array([427000, 448000])

> df.loc['ABBOTSFORD'].tolist()
[427000, 448000]
80
ответ дан Michael Hoff 19 August 2018 в 16:30
поделиться
  • 1
    upvoted! невозможно сделать в 1 шаг, я думаю – PirateApp 27 June 2018 в 11:41

Вы можете изменить индекс, как описано уже с помощью set_index. Вам не нужно вручную менять строки с помощью столбцов, в pandas есть метод transpose (data.T), который делает это для вас:

> df = pd.DataFrame([['ABBOTSFORD', 427000, 448000],
                    ['ABERFELDIE', 534000, 600000]],
                    columns=['Locality', 2005, 2006])

> newdf = df.set_index('Locality').T
> newdf

Locality    ABBOTSFORD  ABERFELDIE
2005        427000      534000
2006        448000      600000

, после чего вы можете получить значения столбца dataframe и преобразовать их в список:

> newdf['ABBOTSFORD'].values.tolist()

[427000, 448000]
6
ответ дан famargar 19 August 2018 в 16:30
поделиться
  • 1
    Путь более простой, чем я думал, что это будет! Благодаря! – Malachi Bazar 7 June 2018 в 03:09
Другие вопросы по тегам:

Похожие вопросы: