Пользовательский редактор запросов мощности - фильтры

Вы можете использовать встроенный модуль csv для вычисления соответствующего номера строки. Затем используйте pd.read_csv с аргументом nrows:

from io import StringIO
import pandas as pd
import csv, copy

mycsv = StringIO(""" A      B     C
34   3.20   'b'
24   9.21   'b'
34   3.32   'c'
24   24.3   'c'
35   1.12   'a'""")

mycsv2 = copy.copy(mycsv)  # copying StringIO object [for demonstration purposes]

with mycsv as fin:
    reader = csv.reader(fin, delimiter=' ', skipinitialspace=True)
    header = next(reader)
    counter = next(idx for idx, row in enumerate(reader) if float(row[1]) > 10)

df = pd.read_csv(mycsv2, delim_whitespace=True, nrows=counter+1)

print(df)

    A      B    C
0  34   3.20  'b'
1  24   9.21  'b'
2  34   3.32  'c'
3  24  24.30  'c'

0
задан Dennis Vash 13 July 2018 в 16:20
поделиться

1 ответ

Из того, что я могу сказать, вы пытаетесь достичь того же, что и вычисление SUMIFS () в таблице excel, но в силовом запросе?

Это можно сделать несколькими способами, но самая простая - с функцией запроса «Групповая». С помощью этого метода вы используете Table.Group () для группировки данных по вашим двум столбцам (Date & amp; Account Number) и получения суммы для всех записей. Затем все, что вам нужно сделать, - это объединить это значение в исходную таблицу, указав поэтапно. Это эквивалентно использованию сводной таблицы, а затем выполняет VLOOKUP как в столбце «Дата и номер счета».

Вот код M:

let
// You're previous code here (replace the "Source" & #"Changed Type" lines)
    Source = Excel.CurrentWorkbook(){[Name="my_data"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Account number", type text}, {"Market Value", type number}}),

// Group by Date & Account Number to sum each record
    #"Calculate Record Value" = Table.Group(#"Changed Type", {"Date", "Account number"}, {{"Value of Record", each List.Sum([Market Value]), type number}}),        // Replace #"Changed Type" in this line with the last step reference from your code
// Merge the group by value back to each record in the orginal table
    #"Merged Record Value" = Table.NestedJoin(#"Changed Type",{"Date", "Account number"},#"Calculate Record Value",{"Date", "Account number"},"sum",JoinKind.LeftOuter),
// Expand your new column
    #"Expanded Record Value" = Table.ExpandTableColumn(#"Merged Record Value", "sum", {"Value of Record"}, {"Value of Record"})
in
    #"Expanded Record Value"

Надеюсь, это полезно! Пожалуйста, дайте мне знать, если я неправильно понял ваш вопрос или если это решение не сработает для вас.

С наилучшими пожеланиями DougC

0
ответ дан dougc39 17 August 2018 в 12:40
поделиться
  • 1
    Большое спасибо за ваш ответ! Вдохновленный вашим предложением и попытайтесь реализовать это. – Quirijn van de Weg 18 July 2018 в 11:25
Другие вопросы по тегам:

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