Вопросы с тегами [pandas]

1

голосов
2

ответ
41

Просмотры

Определение доли не имеет значение из столбца

Я читаю CSV с помощью панд, чтобы выполнить некоторый анализ на нем. Где я получаю эту ошибку ValueError: не удалось преобразовать строку плавать: «никто» Я проверил, я не буду получать эту ошибку из-за shift_zip параметра. Я вручную пошел в CSV-файл и openoffce и превращал этот столбец числовой. Но все-таки дает эту ошибку. Данные выглядит так я вручную проверил shift_zip колонки, но не может найти ни значение в нем. Я также попытался напечатать эти данные столбца и его тип данных, который дает. для Вала в данных [ «nurse_zip»]: # печать ((значение)), если типа (значение) = «INT»: печать (тип ((значение))) выход Как я правильно определить, какой NONE значения в этом столбце является причиной этой проблемы? Edit 1: Добавление большего количества кода для лучшего понимания: набор данных = pd.read_csv ( "model__newdata.csv", [] Изменение 1 Результат на jezrael ответ Это даст Ложные или Правда, как в состоянии. Не удается проверить, какая конкретная строка не является ни или пустым.
Jhon Patric
1

голосов
1

ответ
39

Просмотры

Pandas: Crosstab on multiple columns then Groupby

I have the dataframe that looks like this. df visit_date sex region status 0 2019-04-01 m as pass 1 2019-04-02 m as pass 2 2019-04-02 f na pass 3 2019-04-03 f na fail 4 2019-04-08 f na pass 5 2019-04-09 f as pass 6 2019-04-09 m na pass 7 2019-04-10 m as fail 8 2019-04-15 f as fail 9 2019-04-15 m na pass 10 2019-04-16 f na pass 11 2019-04-17 f na fail visit_date is datetime and the rest are categorical (object). I want to count each value in each column by weekly then set them to columns. Expected Result. f m as na fail pass visit_date 2019-04-07 2 2 2 2 1 3 2019-04-14 2 2 2 2 1 3 2019-04-21 3 1 1 3 2 2 I used pd.crosstab and groupby. df.visit_date = pd.to_datetime(df.visit_date) cols = ['sex', 'region', 'status'] df2 = pd.crosstab(df['visit_date'], df[cols[0]]) for i in range(1, len(cols)): df2 = df2.join(pd.crosstab(df['visit_date'], df[cols[i]])) df2.groupby([pd.Grouper(level='visit_date', freq='1W')]).sum() f m as na fail pass visit_date 2019-04-07 2 2 2 2 1 3 2019-04-14 2 2 2 2 1 3 2019-04-21 3 1 1 3 2 2 The problem is I have to groupby again to sum them up in weekly and it too slow. My actual data have ~100+ columns and ~1 million+ rows. Is there any faster way to get the same result?
ResidentSleeper
1

голосов
2

ответ
44

Просмотры

python efficient way to append all worksheets in multiple excel into pandas dataframe

У меня есть около 20 ++ файлов XLSX, внутри каждого XLSX файлы могут содержать разное количество рабочих листов. Но, слава богу, все столбцы являются некоторыми во всех рабочих листах и ​​всех XLSX файлов. Ссылаясь на здесь «, я получил некоторое представление я пытался несколько способов импортировать и присоединять все первенствует файлы (все рабочего листа) в единый dataframe (около 4 миллиона строк записей). Примечание: я сделал чек здесь», как хорошо, но это только включить на уровне файлов, мой consits файл и вплоть до уровня рабочего листа. Я попытался ниже код # импорта всех необходимых пакета импорта панд, как э.р. из pathlib импорта Путь импорта Глоб импорт SYS # набора истока source_dataset_path = "C: / Users / AAA / Desktop / Sample_dataset /" source_dataset_list = glob.iglob (source_dataset_path + " сделки купли-продажи * ") для файла в source_dataset_list: #xls = э.р.. ExcelFile (source_dataset_list [I]) sys.stdout.write (ул (файл)) sys.stdout.flush () XLS = pd.ExcelFile (файл) out_df = pd.DataFrame () ## создать пустой выходной dataframe для листа в XLS .sheet_names: sys.stdout.write (ул (лист)) sys.stdout.flush () ## # Просмотр первенствовать имена файлов листов #df = pd.read_excel (source_dataset_list [я], название_листа = листов) DF = э.р.. read_excel (файл, SheetName = лист) out_df = out_df.append (ДФ) ## Это будет добавлять строки одного dataframe к другому (так же, как ожидаемому выход) Вопрос: Мой подход подобно первому прочитать каждый первенствовать архив и получить список листов внутри него, а затем загрузите листы и добавлять все листы. Перекручивание кажется не очень эффективным EXPECIALLY когда DataSize увеличения для каждого добавления.
yc.koong
1

голосов
2

ответ
34

Просмотры

How to use mutiple arithmetic functions in multiple columns in pandas dataframe

У меня есть панд dataframe и три списка следующим образом. песни1 = [ 'n3', 'N5', 'n7'] песни2 = [ 'n1', 'п2', 'N4', 'N11', 'N12'] песни3 = [ 'N6', 'n8', ' n9' , 'n10'] пункт n1 n2 n3 n4 n5, n6 n7 n8 n9 n10 n11 n12 item1 1 6 7 8 9 1 6 8 8 9 9 5 item2 1 6 7 6 9 1 8 8 8 9 9 5 Я хочу, чтобы выбрать имена столбцов в трех списках и выполнять следующие арифметические функции. песни1: прибавление песни2: принимать абсолют числа (то есть абс (п)) и сложение List3: принимать обратные числа (то есть 1 / п) и добавление К примеру, если мы возьмем item1: list1: добавить столбцы n3, n5, n7, то есть 7 + 9 + 6 = 22 песни2: принимать abosulte и добавить столбцы n1, n2, n4, N11, N12 т.е. абс (1) + ABS (6) + ABS (8) + ABS (9) + ABS (5) = 29: песни3 взять обратные и добавить столбцы n6, n8, N9, N10 т.е. 1/8 + 1/1 + 1/8 + 1/9 = 1,3611 Теперь я хочу, чтобы добавить суммы по отдельности и общий для dataframe. Пункт n1 n2 n3 n4 n5, n6 n7, n8 N9 N10 N11 N12 list1_sum list2_sum list3_sum total_sum элемент1 1 6 7 8 9 1 6 8 8 9 9 5 ххх ххх ххх ххх элемент2 1 6 7 6 9 1 8 8 8 9 9 5 ххх ххх ххх ххй Я был в состоянии сделать песни1 следующим образом. пеленгации [ «list1_sum»] = ДФ [песни1] .sum (ось = 1) Тем не менее, я не мог найти, как сделать остальные операции. Я рад предоставить более подробную информацию, если это необходимо. Пункт n1 n2 n3 n4 n5, n6 n7, n8 N9 N10 N11 N12 list1_sum list2_sum list3_sum total_sum элемент1 1 6 7 8 9 1 6 8 8 9 9 5 ххх ххх ххх ххх элемент2 1 6 7 6 9 1 8 8 8 9 9 5 ххх ххх ххх ххй Я был в состоянии сделать песни1 следующим образом. пеленгации [ «list1_sum»] = ДФ [песни1] .sum (ось = 1) Тем не менее, я не мог найти, как сделать остальные операции. Я рад предоставить более подробную информацию, если это необходимо. Пункт n1 n2 n3 n4 n5, n6 n7, n8 N9 N10 N11 N12 list1_sum list2_sum list3_sum total_sum элемент1 1 6 7 8 9 1 6 8 8 9 9 5 ххх ххх ххх ххх элемент2 1 6 7 6 9 1 8 8 8 9 9 5 ххх ххх ххх ххй Я был в состоянии сделать песни1 следующим образом. пеленгации [ «list1_sum»] = ДФ [песни1] .sum (ось = 1) Тем не менее, я не мог найти, как сделать остальные операции. Я рад предоставить более подробную информацию, если это необходимо.
Emi
0

голосов
0

ответ
10

Просмотры

Как я могу выбрать входной сигнал от столбца, если он удовлетворяет несколько условий из разных столбцов в другой строке?

Я пытаюсь выбрать определенные входы, которые соответствуют моим условиям других столбцов и создать новый столбец с этим значением. Я попытался .merge, .loc IfElse и я по-прежнему есть что-то неправильное. У меня есть dataframe со следующими столбцами для нескольких акций [ «дата», «тикер», «bid_low», «ask_high», «цена»] и следующих столбцов для каждой опционной цепи [ «exdate», «strike_price», 'best_bid', 'best_offer', 'moving_avg']. Если условие выполнено из moving_avg быть ниже цены, которую я хочу, чтобы выбрать ближайший strike_price этой даты, а затем получить реальную отдачу, если удерживать пока exdate, который будет иметь другую «цену» и exdate будет = дата.
Rodrigo Lask.
1

голосов
1

ответ
13

Просмотры

Как сравнить значение строки по индексу и столбца и применить AND OR логика в dataframe?

У меня есть dataframe, который выглядит следующим образом: col1 0 Ofcourse 1 Я люблю Услугу dataframe также может иметь это значение для строки 1: col1 0 Ofcourse 1 Ненавижу службу я хочу, чтобы сравнить значение строк по строкам и столбцам и быть в состоянии проверить одно из двух значений в row1. Я хочу создать эту логику: если df.col1.loc [[0]] == «Конечно!» и (df.col1.loc [[1]] == 'Я люблю службу' или df.col1.loc [[1]] == 'Я ненавижу услугу'): печать ( 'хорошо') Когда я бегу логика выше, я получаю ошибку: ValueError: значение истинности серии неоднозначна. Использование a.empty, a.bool (), a.item (), a.any () или a.All (). Что я делаю неправильно?
RustyShackleford
3

голосов
2

ответ
21

Просмотры

Dataframe GroupBy - список значений

У меня есть следующий dataframe: driver_id статус dttm 9f8f9bf3ee8f4874873288c246bd2d05 бесплатно 2018-02-04 00:19 9f8f9bf3ee8f4874873288c246bd2d05 занят 2018-02-04 1:03 8f174ffd446c456eaf3cca0915d0368d бесплатно 2018-02-03 15:43 8f174ffd446c456eaf3cca0915d0368d 2018-02-03 17:02 по маршруту 3 колонки: driver_id, статус, dttm Что мне нужно сделать, это группы по идентификатору водителя и сделать список всех статусов с их соответствующими значениями dttm в новую колонку под названием «driver_info»: driver_id driver_info 9f8f9bf3ee8f4874873288c246bd2d05 [( «свободный», 2018-02- 04 00:19), ( "занят", 2018-02-04 1:03)] 8f174ffd446c456eaf3cca0915d0368d [( "свободный", 2018-02-03 15:43), ( "по маршруту", 2018-02-03 17: 02) ...] Как сделать это в Python 3? Я попытался ДФГ = df.groupby (»
Egor Maksimov
1

голосов
2

ответ
786

Просмотры

Как добавить опорную линию к pyplot линии диаграммы?

У меня есть dataframe, для которых я нарисовал линейную диаграмму и добавил ссылочный номер, используя код, приведенный ниже plt.figure (figsize = (15,5)) plt.title ( «Parento анализ», FontSize = 20, цвет = «синего ') plt.xlabel (' продукта», размер шрифта = 14) plt.ylabel ( 'Количество продаж', размер шрифта = 14) plt.plot (parento [ 'Cum_Product%'], parento [ 'Cum_Sales%'], ширины линии = 3,0 ) plt.plot ([10, 10], [0, 80], 'K-', Lw = 1, тире = [2, 2]) plt.plot ([0, 10], [80, 80], 'K-', ЛЕ = 1, тир = [2, 2]) plt.show () Мое решение кажется немного долго для меня. Есть ли другой короткий путь, с которым я могу сделать контрольную линию (10,80)?
Moses Soleman
1

голосов
2

ответ
319

Просмотры

Панды dataframe: GroupBy один столбец, но сцепить и агрегатный другими [дубликат]

сцепить динамики, но не совокупная цены. Я пробовал различные подходы с пандами dataframe.groupby () и .agg (), но безрезультатно. Может быть, проще чистое решение Python?
barciewicz
1

голосов
2

ответ
42

Просмотры

Ошибка: Тоо много значений для распаковки (ожидаются 2), при попытке перебрать два столбца в кадре данных

для L, M в laundry1 [ 'широта'], laundry1 [ 'долгота']: печать ( 'широта: -') печать (L) печать ( 'долгота: -') печати (M) я пытаюсь итерацию над две колонки дата-кадра, назначая там значение L & M и печать там значение, но это показывает ошибку «слишком много значений для распаковки (ожидаемый 2)» вид набора данных с учетом ошибок -> Введите описание изображения здесь пример вывода : широта: - 22.1449787 18,922290399999998 22,1544736 22,136872 22,173595499999998 долгота: - -101,0056829 -99,234332 -100,98580909999998 -100,9345736 -100,9946027
Adarsh singh
1

голосов
2

ответ
35

Просмотры

Получить имена Col и индекс, основанный на значении dataframe

У меня есть dataframe df_corr как этот A2M.AX ABC.AX AGL.AX AHY.AX ALL.AX AMC.AX AMP.AX A2M.AX 1,000000 -0,505433 0,687367 0,223044 -0,664764 -0.199477 ABC.AX -0,505433 1.000000 -0.801770 -0.606418 0.860923 0.332359 0.687367 AGL.AX -0,801770 1,000000 0,394378 -0,917379 -0,193461 AHY.AX 0,223044 -0,606418 0,394378 1,000000 -0,483766 -0,063892 ALL.AX -0,664764 0,860923 -0,917379 -0,483766 1,000000 0,177633 я хочу, чтобы получить имена индексов и столбцов на основе значения этого моя попытка: df_corr [(df_corr> 0,7) и (df_corr
Candice
1

голосов
4

ответ
58

Просмотры

Получить индекс элементов в первой серии во второй серии

Я хочу, чтобы получить индекс всех значений в меньшем серий для увеличения серии. Ответ в фрагменте кода ниже, сохраненный в переменной анс. импорт панды как PD = меньшие pd.Series ([ "а", "г", "B", "K"]) = pd.Series большего ([ "а", "б", "C", "D" , "е", "F", "G", "H", "I", "J", "K", "л", "м"]) # ANS быть порождены некоторой неизвестной комбинацией функций АНСА = [0,6,1,10] печать (larger.iloc [ANS,]) печать (меньше) утверждают (smaller.tolist () == larger.iloc [ANS,] ToList ().) Контекст: Series большие Подачи как индекс для столбцов в матрице Numpy и серии меньших служит в качестве индекса для столбцов в Numpy вектора. Мне нужны индексы для матрицы и вектора совпадает.
par
1

голосов
2

ответ
58

Просмотры

Удалить элементы из списка в панд dataframe

Я хотел бы, чтобы удалить конкретное значение из внутри списка в столбце панды dataframe. Как я могу идти об этом? DF = pd.DataFrame ({ 'А': [ 'а1', 'а2', 'а3'], 'В': [[ 'b1', 'b2'], [ 'b1', 'b1'], [ 'b2']], 'C': [[ 'c1', 'b1'], [ 'b3'], [ 'b2', 'b2']], 'D': [ 'd1', «d2 »,„d3“]}) Я хочу, чтобы удалить строку„b1“в списках из столбца„B“в dataframe.
Mohnish
1

голосов
2

ответ
58

Просмотры

how can I set the string in pandas data frame in the same position in all rows?

I am trying to split the string for making a CPC hierarchy using pandas. Here is my data frame df_all_new_p CPC 0 Y10T403/4602 1 H02S20/00 2 H01L31/02168 I am considering to make 6-10 levels of CPC with the condition that Lv.1 contains the one letter, Lv2 contains two letters, Lv3 contains 2-3 letters and Lv4,5,6,7,8.. are the letter after '/' for example. Y10T403/4602 -> Y, 10, T, 403, 43/4, 43/46, 43/460, 43/4602 H02S20/00 -> H, 02, S, 20, 20/0, 20/00 H01L31/02168-> H, 01, L, 31, 31/0, 31/02, 31/021, 31/0216, 31/02168 but when I run my code which is if df_all_new_p['CPC'].map(lambda x: x[0:7]).str.contains('/').any(): df_all_new_p['Lv1'] = df_all_new_p['CPC'].map(lambda x: x[0:1]) df_all_new_p['Lv2'] = df_all_new_p['CPC'].map(lambda x: x[1:3]) df_all_new_p['Lv3'] = df_all_new_p['CPC'].map(lambda x: x[3:4]) df_all_new_p['Lv4'] = df_all_new_p['CPC'].map(lambda x: x[4:6]) df_all_new_p['Lv5'] = df_all_new_p['CPC'].map(lambda x: x[4:8]) df_all_new_p['Lv6'] = df_all_new_p['CPC'].map(lambda x: x[4:9]) elif df_all_new_p['CPC'].map(lambda x: x[0:8]).str.contains('/').any(): df_all_new_p['Lv1'] = df_all_new_p['CPC'].map(lambda x: x[0:1]) df_all_new_p['Lv2'] = df_all_new_p['CPC'].map(lambda x: x[1:3]) df_all_new_p['Lv3'] = df_all_new_p['CPC'].map(lambda x: x[3:4]) df_all_new_p['Lv4'] = df_all_new_p['CPC'].map(lambda x: x[4:7]) df_all_new_p['Lv5'] = df_all_new_p['CPC'].map(lambda x: x[7:9]) df_all_new_p['Lv6'] = df_all_new_p['CPC'].map(lambda x: x[7:10]) else: df_all_new_p['Lv1'] = df_all_new_p['CPC'].map(lambda x: x[0:1]) df_all_new_p['Lv2'] = df_all_new_p['CPC'].map(lambda x: x[1:3]) df_all_new_p['Lv3'] = df_all_new_p['CPC'].map(lambda x: x[3:4]) df_all_new_p['Lv4'] = df_all_new_p['CPC'].map(lambda x: x[4:8]) df_all_new_p['Lv5'] = df_all_new_p['CPC'].map(lambda x: x[8:10]) df_all_new_p['Lv6'] = df_all_new_p['CPC'].map(lambda x: x[8:11]) df_all_new_p CPC Lv1 Lv2 Lv3 Lv4 Lv5 Lv6 0 Y10T403/4602 Y1 0 T4 03 4602 1 H02S20/00 H 02 S 20 20/0 20/00 2 H01L31/02168 H0 1 L3 1/ 02168 The result shows that just only the 1 H02S20/00 got the correct answer and another rows are got the wrong results. I assumed that the reason occurred by the character position in each row. Therefore, I wonder that are there any ways to solve this problem? I expect to see the result like this. CPC 1 2 3 4 5 6 Y10T403/4602 Y 10 T 403 43/4 43/46 H02S20/00 H 02 S 20 20/0 20/00 H01L31/02168 H 01 L 31 31/0 31/02
Sujin
1

голосов
2

ответ
26

Просмотры

множественный индекс столбцов в панде

У меня есть dataframe в панд: (индекс) количество 0,0 0 0,0 1 +73,74770979 +34,36146516000001 1,0 0 1,0 1 +25,759792399999995 +117,37044276999995 Я хотел бы иметь DataFrame как этот: Индекс amount_0, amount_1 0,0 73 .... 34 ... 25 1.0. ... 117 ... как я могу это сделать. Мой индекс столбец состоит из столбцов «часа» и «стороны».
FNTE
1

голосов
2

ответ
70

Просмотры

не Конкатенация панд DataFrames с перекрытием индексов, но никогда не пересекающиеся значений

У меня есть два DataFrames произвольной формы типа: ABC 0 A0 B0 C0 1 А1 В1 С1 2 А2 В2 NaN 3 А3 NaN NaN 4 А4 NaN NaN и АВС 2 NaN NaN С2 3 NaN B3 С3 4 NaN В4 С4 5 A5 B5 C5 6 A6 B6 C6 два DataFrames имеют перекрывающиеся индексы. Там, где существует перекрытие, для данного столбца, есть не-NaN в одном DataFrame и NaN в другом. Как можно объединить эти такие, что можно достичь DataFrame со всеми значениями и никаких пренебрежимо малых: ABC 0 A0 B0 C0 1 А1 В1 С1 2 А2 В2 С2 3 А3 В3 С3 4 A4 B4 C4 5 A5 B5 C5-6 A6 B6 C6 Мои предложил решение: DF3 = pd.concat ([pd.concat ([df1 [Col] .dropna (), df2 [Col] .dropna ()]) окра в df1.columns], оси = 1) Тем не менее, в идеале я не будет работать столбец за столбцом.
LevDavidovich
1

голосов
2

ответ
31

Просмотры

Average of Dataframes

Предположим, у меня есть три dataframes с одинаковым индексом и те же столбцы названий (некоторые столбцы строки другие числовые): df1, df2, DF3. df1 часы | X1 | X2 | X3 | Х4 0 | 10 | H | 2 | -1 1 | 10 | б | 1 | 0 2 | 10 | D | 1 | 0 3 | 20 | L | 1 | 0 df2 час | X1 | X2 | X3 | Х4 0 | 10 | H | 1 | 1 1 | 10 | б | 1 | 0 2 | 10 | D | 1 | 0 3 | 20 | L | 2 | 0 DF3 час | X1 | X2 | X3 | Х4 0 | 10 | H | 0 | 0 1 | 10 | б | 0 | 0 2 | 10 | D | 0 | 0 3 | 20 | L | 0 | 30 Я хочу, чтобы новый dataframe, который является средним значением этих dataframes для числовых значений, но сохранить строку Колум как (все столбцы со строками являются одинаковыми). df4 = Час | X1 | X2 | X3 | Х4 0 | 10 | H | 1 | 0 1 | 10 | б | 1 | 0 2 | 10 | D | 1 | 0 3 | 20 | L | 1 | 10 Я предпочитаю делать это с помощью добавления функции, как я должен написать цикл для доступа к каждому кадру данных. Спасибо!
user2512443
1

голосов
2

ответ
48

Просмотры

Маска нижней части triangluar панд DataFrame

Это выходной dataframe я генерация, которая является корреляционной матрицей 5 х 5. ABCDE 1,00000 0,653920 -0,277360 -0,479600 0,513890 1,000000 -0,27736 Б -0,790648 0,885801 -0,482763 С 0,65392 1,000000 -0,790648 -0,876451 0,672148 0,885801 D -0,47960 1,000000 -0,876451 -0,756182 Е 0,51389 0,672148 -0,482763 -0,756182 1,000000 Я хотел бы для получения общее среднее значение этого dataframe, но для этого мне нужно игнорировать повторяющиеся значения (оставляя только первое вхождение). Я попытался с помощью df.drop_duplicates (Inplace = True) Однако, она возвращает ФР без изменений, который я считаю, это потому, что drop_duplicates () будет удалять строки, но не заменять отдельные клетки с NaN. Любые предложения о том, как достичь этого? (Требуемый выход ниже) Обратите внимание, что I» d также необходимо специфический удалить корреляции == 1, так как они не являются необходимыми. ABCDE NaN -0,277360 0,653920 0,513890 -0,479600 В NaN NaN -0,790648 0,885801 -0,482763 С NaN NaN NaN -0,876451 0,672148 D NaN NaN NaN NaN -0,756182 Е NaN NaN NaN NaN NaN
pepe
1

голосов
1

ответ
53

Просмотры

Pandas Dataframe add missing timestamp row and then forward fill previous values

714791 2018-11-11 16: 22: +22,299974400 К -15,897694 84,714799 2018-11-11 16: 22: +22,400025600 G -15,89764 84,714794 2018-11-11 16: 22: +22,400025600 К -15,897622 84,714632 2018-11-11 16: 22: +22,400025600 Y -15,897692 84,714804 2018-11-11 16: 22: +22,400025600 Вт -15,897623 84,714635 2018-11-11 16: 22: +22,499990400 Y -15,897692 84,714806 2018-11-11 16: 22: +22,499990400 Вт -15,897694 84,714802 2018 -11-11 16: 22: +22,499990400 G -15,897641 84,714795 2018-11-11 16: 22: +22,499990400 K -15,897694 84,714808 Если вы заметили, у меня есть 4-х игроков: G, W, K, Y. Поэтому должно быть 4 каждый индекс временной метки. Тем не менее, некоторые Timestamps отсутствуют. Как я могу добавить все недостающие временные метки, а затем вперед заполнить другие значения, чтобы получить только те игроки, которые не находятся в данной временной метки? Например, для временной метки 2018-11-11 16:22:22. 099958400, Игрок G отсутствует. Как я могу заполнить только для этого игрока? Желаемая выход (я разнесены рамку, чтобы сделать его более удобным для чтения): Отметка игрока повернутого Lat повернутого Lon 2018-11-11 16: 22: +21,999993600 G -15,89769 84,714795 2018-11-11 16: 22: +21,999993600 W -15.897637 84.714784 2018 года -11-11 16: 22: +21,999993600 К -15,897617 84,714621 2018-11-11 16: 22: +21,999993600 Y -15,897638 84,714787 2018-11-11 16: 22: +22,099958400 К -15,897618 84,714623 2018-11-11 16:22: +22,099958400 Y -15,897691 84,714796 2018-11-11 16: 22: +22,099958400 Вт -15,897619 84,714626 2018-11-11 16: 22: +22,099958400 G -15,89769 84,714795 2018-11-11 16: 22: +22,200009600 Y -15,897693 84,714794 2018-11 -11 16: 22: +22,200009600 G -15,897639 84,714788 2018-11-11 16: 22: +22,200009600 К -15,897693 84,714802 2018-11-11 16:22:22.
bbd108
1

голосов
2

ответ
49

Просмотры

Извлечение п-й элемент из каждого списка и хранить его в новой колонке [дублировать]

Этот вопрос уже есть ответ здесь: Python Панда: выбор элемента в столбце массива 2 ответов я в dataframe (так называемый «DF»), который содержит столбец под названием «сорт». Этот столбец содержит список классов. Данные в этой колонке типа «объект». student_id сорта 0 11 [А, А, В, А] 1 12 [В, В, В, С] 2 13 [С, С, D, B], 3 21 [В, А, С, В] Я надеюсь чтобы создать новую колонку под названием «maths_grades», который будет хранить 3-й элемент в списке классов. Результат: student_id сортов maths_grade 0 11 [А, А, В, А] В 1 12 [В, В, В, С] В 2 13 [С, С, D, B], D 3, 21 [В, А, С , B] C Что лучше всего было пойти по этому поводу?
Mark Kennedy
1

голосов
2

ответ
32

Просмотры

выбор по меткам и запись в формат CSV

Я новичок в панду так надеюсь, что это легко исправить. Я пытаюсь создать CSV-файл, который содержит только столбцы, называемые в df.loc []. Мой файл CSV в настоящее время показывает все доступные строки / столбцы так что выбор не работает. импорт запросов, импорт панды JSON как П.Д. # URL и даты, установленной ранее ответ = requests.post (URL, дата, заголовок = { 'Authorization': 'OAuth mycode'}) если response.status_code == requests.codes.ok: response_json = response.json () печать ( '\ п \ п \ nReturned JSON \ п \ п \ п') печати (json.dumps (response_json, sort_keys = True, отступы = 4, отделители = ( '', ':' ))) # DF = pd.DataFrame.from_dict (response_json) DF = pd.DataFrame (response_json) печати (df.keys ()) df.loc [: [ 'Комментарий', 'EndTimeLocalized', 'Id',» StartTimeLocalized ']] df.to_csv (»
Bixby
1

голосов
1

ответ
50

Просмотры

Как форматировать Dataframe даты в одном формате

Я понятия не имею, почему, но мой DataFrame показывает даты (индекс) в различных форматах. Не знаю, как это исправить. Мой код: csv_m = pd.read_csv ( 'coins_mktcap.csv') data_m = pd.DataFrame (csv_m) data_m [ 'дата'] = pd.to_datetime (data_m [ 'дата']) data_m.set_index ( 'дата', Inplace = True) df_m = data_m.dropna (ось = 1, как = 'все') csv_m дата вывода 12/01/17 13/01/17 14/01/17 ... df_m дата вывода 2017-12-01 2017- 01-13 2013-01-14 .. 2017-01-02 2017-02-02 Я ожидаю чистой df_m дата выхода 2017-01-12 2017-01-13 2013-01-14
Alexander Thomsen
1

голосов
2

ответ
33

Просмотры

Используйте исходный путь из списка агрегировать расходы из в dataframe

Я следующий путь источника в виде списка - [ «node_A», «node_B», «node_C», «node_D»] Есть несколько других путей источника и выше один только пример. Node_B является источником node_A и node_C является источником для node_B и так далее. ИСТОЧНИК НАЗНАЧЕНИЯ node_B node_A node_C node_B node_D node_C У меня есть dataframe, что имеет следующие столбцы - целевой источник cost_1 cost_2 cost_3 cost_4 node_B node_A 1 5 7 5 node_C node_B 3 1 2 1 node_D node_C 1 5 1 5 node_Y node_X 3 2 7 1 node_Z node_Y 1 5 1 2 Основываясь на моем исходном пути, я хочу, чтобы фильтровать мой dataframe на соответствующие узлы источника и назначения и суммировать затраты тех пар. Например, в исходном пути выше [ «node_A»,» node_B», 'node_C', 'node_D'] я должен получить что-то вроде этого - source_path cost_1 cost_2 cost_3 cost_4 [ 'node_A', 'node_B', 'node_C', 'node_D'] 5 11 10 11 Я могу сделать это путем фильтрации, основанный на dataframe источника и назначение пару (для каждого из 3-х пара исходного пути). Я затем добавить 3 строки вместе, а затем сделать сумму по стоимости. Однако это занимает значительное время. Является эффективным способом сделать это? В случае необходимости я могу вставить свой код здесь. ] 5 11 10 11 Я в состоянии сделать это путем фильтрации, основанный на dataframe источника и назначение пару (для каждого из 3-х пара исходного пути). Я затем добавить 3 строки вместе, а затем сделать сумму по стоимости. Однако это занимает значительное время. Является эффективным способом сделать это? В случае необходимости я могу вставить свой код здесь. ] 5 11 10 11 Я в состоянии сделать это путем фильтрации, основанный на dataframe источника и назначение пару (для каждого из 3-х пара исходного пути). Я затем добавить 3 строки вместе, а затем сделать сумму по стоимости. Однако это занимает значительное время. Является эффективным способом сделать это? В случае необходимости я могу вставить свой код здесь.
Karvy1
1

голосов
2

ответ
36

Просмотры

Разделение DataFrame на 2 в одном сканировании

Скажем, есть следующие dataframe: DF = pd.DataFrame ({ 'А': [1,2,3,4], 'B': [1,4,9,16]}) Если я должен разделить его на 2 dataframes, мы можем сделать следующим образом DF1 = D [ДФ [ 'B'] <5] df2 = ДФ [ДФ [ 'B']> = 5] Но здесь ДФ будет сканироваться дважды. Есть в любом случае, чтобы разделить DataFrame на 2 в одной эффективной линии; с одним сканированием? Редактирование: Даже @jezrael предложение выполняет аналогично: м = D [ 'B'] <5 производительности #better с сравнением Numpy массива # мин = DF [ 'В'] значение <5 df1 = ДФ [м] df2 = DF [~. м]
ggaurav
1

голосов
2

ответ
32

Просмотры

Pandas Identify row numbers in lists that has False present in data frame

У меня есть dataframe как это, кола Result_ColA ColB Result_ColB Result_ColC 1 Правда 1 True True 2 Ложные 2 True False 3 Правда 3 True False Я хочу, чтобы определить номера строк внутри списка в Python, который имеет значение ЛОЖЬ, присутствующий в любом из Result_ колонны. Для данного dataframe, ложный список будет иметь номер строки [2 и 3], присутствующие в ней. принимая во внимание номера строк, начиная с 1. Тип Tracebacks Ошибка: ReqRows = np.arange (1, Len (Out_df) + 1) [Out_df.eq (Ложь) .any (ось = 1) .values] .tolist () Traceback ( самый последний вызов последнего): Файл "", линия 1, в ReqRows = np.arange (1, длина (Out_df) + 1) [Out_df.eq (False) .any (ось = 1) .values] .tolist () Файл "C: \ Users \ ааа \ AppData \ Local \ Continuum \ Anaconda3 \ Lib \ сайт-пакеты \ панды \ ядро ​​\ ops.py", строка 1279, в е самовозврата.
Sid29
1

голосов
3

ответ
50

Просмотры

Adding in missing months to a dataframe with null values

У меня есть DataFrame, что я пытаюсь найти частоту определенных событий с. Так, например, она указана в следующем Месяц Год Событие UniqueID 1 2018 A 01 1 2018 A 02 2 2018 B 03 .... и т.д. У меня есть все, сгруппированных по частоте события в год. Я сделал это с помощью следующего кода. Это подсчитывает все события, так что я могу усреднить их df.groupby ([ 'Year', 'Месяц', 'Event']) [ 'Event']. Размер (). Переименовывать ( 'Граф событий'). Reset_index ( ) что дает нам что-то вдоль линий год месяц события Количество событий 2018 года 01 A 2 02 2018 B 1 ... А потом я получаю в среднем, как часто бывает в месяц в течение всего года с помощью df.groupby ([ 'Event']) [ 'Граф событий']. значит (), который дает мне в среднем. Однако одна вещь, которую я заметил, что у меня может быть пробелов. Например, событие «А», может произойти в январе и феврале, но не март, так что это не даст мне истинное «среднее» в течение года. Что было бы лучшим способом «затыкать» Эти дыры? Например, в приведенном выше примере списке, граф Месяц Год События События 1 2018 02 1 2018 B 00 1 2018 C 00 2 2018 00 2 2018 B 00 2 2018 B 01 ... Был бы оптимальный конечный результат, прежде чем я усреднить. Спасибо! Месяц Число Год Событие События 1 2018 02 1 2018 B 00 1 2018 C 00 2 2018 00 2 2018 B 00 2 2018 B 01 ... Был бы оптимальный конечный результат, прежде чем я усреднить. Спасибо! Месяц Число Год Событие События 1 2018 02 1 2018 B 00 1 2018 C 00 2 2018 00 2 2018 B 00 2 2018 B 01 ... Был бы оптимальный конечный результат, прежде чем я усреднить. Спасибо!
remh
1

голосов
2

ответ
54

Просмотры

Как очистить повторяющиеся данные в клетках панд?

У меня есть кадр данных, в которой столбец пол Повторяющиеся в клетках, вот пример: 1. Мужчина 2. Женщина, женщина 3. Женщина, женщина, женщина, женщина
mickeywise
1

голосов
2

ответ
37

Просмотры

Список для dataframe, каждый элемент в списке в колонке

Ho все, я хочу, чтобы создать dataframe из списка, где каждый элемент из списка является столбец. Пример: Col 0 A_1 1 А_2 2 A_1 3 B_3 4 B_2 Я хочу иметь dataframe как этот Col1. col2 0 A. 1 1. 2 2 B. 3 3 B. 2 .... расщеплены «_» и сделать два столбца и удалить дубликаты Заранее спасибо
noaai
1

голосов
1

ответ
28

Просмотры

Найти единый индекс, соответствующий dataframe строки 2 колонки условными

У меня есть dataframe с 3 столбцами и мне нужно, чтобы получить индекс строки, которые соответствуют значениям с 2-мя колоннами. Например, ниже dataframe: Имя Город Страна Pietro Roma Италия Maria Милан Италия Pietro NY USA В этом случае, мне нужно, чтобы получить индекс Pietro | Roma | Италия, seaching для имени и только те столбцы города. Я пытался делать код, приведенным ниже, но он возвращает все строки, который соответствует 2 столбцов. IDX = np.where (dataframe [dataframe [ "Name"] == 'Pietro'], dataframe [dataframe [ "Город"] == 'Roma']) Но она возвращает массив индексов [[0,2], [0]], и мне нужно, чтобы вернуть индекс 0, что где у меня есть имя = 'Pietro' и City = 'Roma' Обновлены решение решение: dataframe.index [(dataframe [ "Name"] == 'Pietro' ) & (dataframe [ "Город"] == 'Рома'
Alan Gularte
1

голосов
2

ответ
37

Просмотры

Игнорировать значения NaN при замене имен в панде

Я пытаюсь заменить некоторые значения на определенном столбце в моем наборе данных. * (Обратите внимание на наличие записей NaN) Колонка: Имя значения: ОЛИВЕР ГАРРИ ОЛИВЕР NaN NaN HARRY При выполнении следующих действий: DF [ 'Name'] = 'User' + pd.Series (pd.factorize (DF [ 'Name'] ) [0] + 1) .astype (ул) я в основном то, что я хочу: значения: User1 User2 User1 Пользователь0 Пользователь2 Пользователь0 проблема заключается в том, что мне нужны значения NaN, чтобы оставаться NaN. Обработка должна игнорировать значения столбцов NaN и оставить их как таковые, получить что-то вроде: Значения: User1 User2 User1 NaN NaN Пользователь2 Как это можно сделать?
Vlad Danila
1

голосов
2

ответ
28

Просмотры

Найти строки из панда DataFrame, если есть другая строка соответствия некоторых условий в данном

Например, если у меня есть DF, как следующее: п от км до 0 B 300 A 1 A 300 B 2 D 290 A 3 B 310 С 4 290 Д. И. хотел бы выбрать строки 0, 1, 2 и 4, так как они все они имеют другую строку в том же DF, который перевернутый от и до. df2 = pd.DataFrame (столбцы = [ 'до', 'с', 'км']) для индекса, строки в df.iterrows (): F, T = строка [ 'от'], строка [ 'до'] если ((DF [ 'до'] == е) и (DF [ 'от'] == т)) любой ():. df2 = df2.append (строка)> df2 до 0 км от AB 300 1 300 BA 2 AD 290 4 DA 290 можно ли сделать это без итерации по строкам?
zhantongz
1

голосов
2

ответ
28

Просмотры

Что такое Панды Эквивалент SQL Update?

Это должно быть очень легко, но Google не помогает. Что версия Панды / Python3 из: UPDATE таблица SET column1 = «значение» WHERE COLUMN2 НРАВИТСЯ «некоторое значение%» UPDATE: К сожалению, это больше, чем просто обновление. Это обновление с шаблоном.
Bob Wakefield
1

голосов
3

ответ
32

Просмотры

Как получить индексы строк, который имеет значения х количество функций же отличаясь одна особенность?

Образец DataFrame: pd.DataFrame ({ 'Name': [ 'Джон', 'Питер', 'Джон', 'Джон', 'Donald'], 'Город': [ 'Boston', 'Япония', 'Бостон' «Даллас», «Япония»], «Возраст»: [23,31,21,21,22]}) То, что я хочу, чтобы получить список индексов всех строк, который имеет ту же «Имя» и «Город» но разный возраст, с помощью панд. В этом случае: он должен вернуться [0,2]
Naushad Shukoor
1

голосов
2

ответ
47

Просмотры

Панды - GroupBy кумулятивный TimePeriod

Вот моя проблема: Представьте dataframe индексированных по времени. DF = pd.DataFrame (индекс = [ "00:00:00", "00:00:08", "00:00:14", "00:00:21", "00:00:23",» 00:00:49 "], данные = {" col1 ": [" а», "б", "а", "а", "в", "г"], "col2": [4,4, 4,6,6,7], «col3»: [2,17,2,2,3,50]}) Теперь я хотел бы применить функцию и сгруппировать данные, основанные на совокупное время в 15-секундными интервалами, т.е. для отметки времени между 00:00:00 - 00:00:15, 00:00:00 - 00:00:30, 00:00:00 - 00:00:45 и т.д. Скажем, например, я хочу подвести все значения col2, col3 и разделить одно на другое, если значение в col1 является «а» в каждом из этих интервалов. Вывод должен быть что-то вроде: выход 00:00:15 2 00:00:30 2.
SanMu
1

голосов
2

ответ
57

Просмотры

Как я могу создать dataframe из данных я соскабливают с веб-сайта?

текст суп = BeautifulSoup (источник, 'LXML') Результаты = [] для работы в soup.findAll (класс 'результат' _ =): результат = { 'JOB_TITLE': '', 'компании': '', 'кратко': «», «ссылка»: «», «summary_text»: «»}, и после того, как с помощью петли, я просто распечатать результаты. Что бы быть хорошим способом, чтобы получить выход в dataframe? Спасибо! } И после того, как с помощью петли, я просто распечатать результаты. Что бы быть хорошим способом, чтобы получить выход в dataframe? Спасибо! } И после того, как с помощью петли, я просто распечатать результаты. Что бы быть хорошим способом, чтобы получить выход в dataframe? Спасибо!
Harshmallo
1

голосов
1

ответ
98

Просмотры

Отбросьте dataframe столбцы, где значение строки, как «[]»

В моем dataframe есть несколько строк, в которых значение равно как и «[]», и я хочу бросить весь столбец, как сделать это? Данные рамки Image И вот мой код импорта повторно для я, строка в df.iterrows (): для J, колонки в row.iteritems (): #print (колонка) #print (к) т = re.findall ( "\ [ \]», колонка), если т: df.drop (у, ось = 1, Inplace = True) еще: печать ( 'Nothing' + J) и вот ошибка я получаю TypeError Traceback (самый последний вызов последнего) в 3 # печать (колонка) 4 #print (J) ----> 5 т = re.findall ( "\ [\]", столбец) 6, если т: 7 df.drop (J, ось = 1, Inplace = True) /anaconda3/lib/python3.7/re.py в FindAll (шаблон, строка,
Vijayaraghavan
1

голосов
2

ответ
29

Просмотры

Использование если / другое в Dataframe.assign () приводит к ValueError: Значение истинности Серии

У меня есть тонна данных преобразования, определенные в пакете язык, который поддерживает эту структуру преобразования: х = IIF (условие, а, б). Я хочу, чтобы переписать эти используя dataframes. Я использую Dataframe.assign (), но получить ValueError: Значение истинности Серии неоднозначно. Использование a.empty, a.bool (), a.item (), a.any () или a.All (). импорт панды как Pd DF = pd.DataFrame ([ 'яблоко', 'оранжевый', 'гранит'], столбцы = [ 'имя']) df.assign (вкус = лямбда х: 'каменистый', если (x.name = = 'гранит') еще 'вкуснятина') ---------------------------------------- ----------------------------------- ValueError Traceback (самый последний вызов последнего) в () ---- > 1 df.assign (вкус = лямбда х: 'каменистый', если (x.name == 'гранит') Else 'вкуснятина' Значение истинности Серии неоднозначно. Использование a.empty, a.bool (), a.item (), a.any () или a.All (). Сначала я думал, что это было связано с ограничением числа ключевых слов, разрешенных в правопреемника (), но очень похожая конструкция работает с применить ():. Д.Ф. [ «имя»] применить (лямбда-х: «каменистый», если (х == «гранит») еще «вкуснятина») 0 вкуснятина 1 вкуснятина 2 каменистого имя: имя, DTYPE: объект Однако это не позволяет мне использовать с условием, если-то использует несколько столбцов из dataframe. Есть ли способ, чтобы получить Assign () для работы? вкуснятина ') 0 вкуснятина 1 вкуснятина 2 каменистого Имя: имя, DTYPE: объект Однако это не позволяет мне использовать с условием, если-то использует несколько столбцов из dataframe. Есть ли способ, чтобы получить Assign () для работы? вкуснятина ') 0 вкуснятина 1 вкуснятина 2 каменистого Имя: имя, DTYPE: объект Однако это не позволяет мне использовать с условием, если-то использует несколько столбцов из dataframe. Есть ли способ, чтобы получить Assign () для работы?
Scott Wilson
1

голосов
2

ответ
42

Просмотры

Как преобразовать формат строки даты в BOOL Истинные и другие Ложные?

импорт панды импортировать NumPy DF = pandas.DataFrame ({ 'col1': [ 'а', 'б', 'с', 'б'], 'col2': [ 'N', '2018-03-12 15: 35' , numpy.NaN, '2017-06-12 15:35'], 'col3': [ 'с', 'B', 'B', 'B']}) для печати (DF) Выход выше сценария это: col1 col2 col3 0 A N C 1 B 2018-03-12 15:35 B 2 C NaN 3 б б 2017-06-12 15:35 б Как колонке col2, я хочу, чтобы преобразовать все гггг-мм-дд чч: мм строка формат BOOL Правда, другие False, то оставьте значение Na так же. Ожидать результат, как показано ниже: col1 col2 col3 0 Ложное с 1 б Правда б 2 с NaN б 3 б Правда б Как это сделать? Заранее спасибо!
kittygirl
1

голосов
1

ответ
28

Просмотры

Панды: Как избежать fillna в то время как передискретизации от ежечасно ежедневных данных

У меня есть серия, которая состоит из почасовых данных. Я хочу, чтобы вычислить ежедневную сумму. Данные могут быть не хватает часов, а иногда отсутствуют даты. 2017-02-01 00:00:00 3,0 2017-02-01 01:00:00 4,0 2017-02-01 02:00:00 4,0 2017-02-03 00:00:00 3,0 Например, в то время серия выше для 2017-02-01, только первые данные три часа присутствует. Остальные данные 21 часов отсутствуют. Данные для 2017-02-02 полностью отсутствует. Я не забочусь о несуществующих часов. Суточная сумма должна учитывать все данные, присутствует в течение дня (в примере, он должен рассмотреть часы 0, 1, 2). Но, если дата полностью отсутствует, я должен иметь значение NaN как сумма для этой даты. частоты дискретизации (), а затем по сумме () отлично работает для # 1. Но это возвращает меня 0 для # 2. 2017-02-01 110,0 2017-02-02 0,0 2017-02-03 3,0 Здесь манекен код: my_series.resample ( «1D», закрытые =»
Arnab Biswas
1

голосов
2

ответ
45

Просмотры

what is different between groupby.first, groupby.nth, groupby.head when as_index=False

Edit: новобранец ошибка, которую я сделал в строке np.nan указав путем @coldspeed, @ вэнь-Бен, @ALollz. Ответы довольно хорошо, так что я не удалить этот вопрос, чтобы ответы на эти вопросы. Оригинал: Я прочитал этот вопрос / ответ Какая разница между groupby.first () и groupby.head (1)? Этот ответ объяснил, что различия по обработке значения NaN. Однако, когда я называю GroupBy с as_index = False, они оба подобрать NaN штраф. Кроме того, Панды имеют groupby.nth с аналогичной функциональностью на голову, и в первую Что разница groupby.first (), groupby.nth (0), groupby.head (1) с as_index = False? Пример ниже: В работе [448]: ДФ Из [448]: АВ 0 1 np.nan 1 1 4 2 1 14 3 2 4 8 2 19 5 2 12 В работе [449]: df.groupby ( 'А', as_index = False) .Head (1) Из [449]: AB 0 1 нп. нан 3 2 8 В [450]: df.groupby ( 'A', as_index = False) .first () Из [450]: AB 0 1 1 2 np.nan 8 в [451]: df.groupby (A ' 'as_index = False) .nth (0) Из [451]: АВ 0 1 2 3 np.nan 8 Я видел, что `пихты ()' сбрасывает индекс, а другой 2 не делает. Кроме того, есть ли какое-либо различие?
Andy L.

Просмотр дополнительных вопросов

Связанные вопросы