У меня есть набор данных, который выглядит так, числа в столбцах NY
, LA
и CHI
- это количество раз, когда люди посещали эти города.
import pandas as pd
data = {'Person':['A','B','C','D','E','F'],
'NY':[1, 1, 0, 3, 0, 0],
'LA':[0, 1, 1, 0, 1, 1],
'CHI':[2, 0, 1, 0, 0, 1],
'Gender':['F','F','F','M','M','NA'],
'Citizenship':['US','Canada','US','US','Mexico','Canada'],
'Age':['30s','30s','50s','NA','20s','30s']}
df = pd.DataFrame(data)
Я суммирую те, которые принадлежат различным группам, определенным Gender
, Citizenship
или Age
. Я мог бы сделать это, как показано ниже.
n_by_gender = df.groupby(['Gender']).sum()
n_by_citizenship = df.groupby(['Citizenship']).sum()
n_by_age = df.groupby(['Age']).sum()
pd.concat([df, n_by_gender, n_by_citizenship, n_by_age])
Теперь я пытаюсь написать модуль argparse
, который может делать что-то похожее на это. Я хотел ввести в него два аргумента, чтобы люди могли выбирать, по какой группе они хотят суммировать данные. (Например, если люди набирают python modulename.py -Gender -Age
, он вернет то, что я создал выше, за исключением строк, в которых суммировано количество посещений по гражданству.
import argparse
parser = argparse.ArgumentParser(description='Sum data by group')
parser.add_argument('-g', default = "Gender", type=str) ### need to add some action here?
parser.add_argument('-c', default = "Citizenship", type=str)
args = parser.parse_args()
print(args.b_string)
print(args.c_string)
Я читал argparse
документов и что для меня не имеет смысла, так это то, что каждое действие, кажется, добавляется внутри parser.add_argument()
с использованием класса action
? Как мне добавить команду groupby().sum()
внутри parser.add_argument()
, или это очень неправильное понимание того, как работает argparse
?