Вы можете использовать встроенный модуль 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'
Из того, что я могу сказать, вы пытаетесь достичь того же, что и вычисление 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