Импортировать дату строки из CSV в mytable [duplicate]

Данные обрезания с помощью pandas

Для такого кадра данных:

    RPT_Date  STK_ID STK_Name  sales
0 1980-01-01       0   Arthur      0
1 1980-01-02       1    Beate      4
2 1980-01-03       2    Cecil      2
3 1980-01-04       3     Dana      8
4 1980-01-05       4     Eric      4
5 1980-01-06       5    Fidel      5
6 1980-01-07       6   George      4
7 1980-01-08       7     Hans      7
8 1980-01-09       8   Ingrid      7
9 1980-01-10       9    Jones      4

Существует несколько способов выбора или резки данных.

Использование. isin

Наиболее очевидным является функция .isin. Вы можете создать маску, которая дает вам ряд операторов True / False, которые могут применяться к кадру данных следующим образом:

mask = df['STK_ID'].isin([4, 2, 6])

mask
0    False
1    False
2     True
3    False
4     True
5    False
6     True
7    False
8    False
9    False
Name: STK_ID, dtype: bool

df[mask]
    RPT_Date  STK_ID STK_Name  sales
2 1980-01-03       2    Cecil      2
4 1980-01-05       4     Eric      4
6 1980-01-07       6   George      4

Маскировка - это специальное решение проблемы , но не всегда хорошо работает с точки зрения скорости и памяти.

С индексированием

. Устанавливая индекс в столбец STK_ID, мы можем использовать объект разрезания pandas builtin sliced ​​.loc

df.set_index('STK_ID', inplace=True)
         RPT_Date STK_Name  sales
STK_ID                           
0      1980-01-01   Arthur      0
1      1980-01-02    Beate      4
2      1980-01-03    Cecil      2
3      1980-01-04     Dana      8
4      1980-01-05     Eric      4
5      1980-01-06    Fidel      5
6      1980-01-07   George      4
7      1980-01-08     Hans      7
8      1980-01-09   Ingrid      7
9      1980-01-10    Jones      4

df.loc[[4, 2, 6]]
         RPT_Date STK_Name  sales
STK_ID                           
4      1980-01-05     Eric      4
2      1980-01-03    Cecil      2
6      1980-01-07   George      4

Это быстрый способ сделать это, даже если индексирование может занять некоторое время, это экономит время, если вы хотите выполнить несколько запросов, подобных этому.

Объединение фреймов данных

Это также можно сделать, объединив данные.

stkid_df = pd.DataFrame({"STK_ID": [4,2,6]})
df.merge(stkid_df, on='STK_ID')
   STK_ID   RPT_Date STK_Name  sales
0       2 1980-01-03    Cecil      2
1       4 1980-01-05     Eric      4
2       6 1980-01-07   George      4

Примечание

Все вышеописанные методы работают, даже если имеется несколько строк с 'STK_ID'

9
задан Michael Irigoyen 15 August 2013 в 18:47
поделиться

1 ответ

Вы можете загрузить строки даты в пользовательские переменные, а затем использовать STR_TO_DATE(@date, '%m/%d/%Y') , чтобы преобразовать их в даты MySQL.

Попробуйте следующее:

load data infile  '/Users/pfarrell/sandbox/waybase/folklore/Titles_1976.csv'
into table fix76
fields terminated by ','
enclosed by '"'
ignore 1 lines
(  patentId,  USPatentNum,  title,  @grantDate,  @filedDate)
set grantDate = STR_TO_DATE(@grantDate, '%m/%d/%Y'),
filedDate = STR_TO_DATE(@filedDate, '%m/%d/%Y')
8
ответ дан George Bailey 22 August 2018 в 06:48
поделиться
Другие вопросы по тегам:

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