Сравните значение ячейки датафрейма с серией, затем найдите сумму - PullRequest
0 голосов
/ 04 октября 2018

Допустим, у меня есть Pandas DataFrame, как показано (df_All);

  Category Count
0  Apple     1
1   Pen      3
2  Orange    4
3   Book     1

и 2 серии панд, как это (df_Fruit, df_Object);

  Fruit                                Object
0 Apple                              0 Pen
1 Orange                             1 Book

Я хочу сравнить сDataFrame для серии, так что я получу сумму, как эта таблица;

  Category Count
0 Fruit      5
1 Object     4

Я пытаюсь использовать функцию цикла и сравнить следующим образом;

def getCategoryCount(row):
    food_count = 0

    for value in df_Fruit['Fruit']:
        if row['Category'] == value:
            food_count = row['Count']

    return food_count

df = df_All.apply(getCategoryCount, axis=1)

Однако, df fillкак это;

0 1
1 0
2 4
3 0

Я могу использовать df.sum(), чтобы получить значение, но только для Series за один раз, поскольку, если я добавлю еще один цикл for в getCategoryCount, он будет суммировать всю df.

Если возможно, я хочу getCategoryCount вернуть как Pandas DataFrame

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Сначала я бы сгруппировал категории в 2 списка следующим образом:

fruits = list(fruits)
objects = list(objects)

Затем я бы нарезал df_all и суммировал столбец Count, в результате чего df определялся следующим образом:

df = pd.DataFrame([['Fruits', df_all[df_all.Category.isin(fruits)]['Count'].sum()], ['Objects', df_all[df_all.Category.isin(objects)]['Count'].sum()]], columns = ['Category', 'Count'])

Когда я печатаю df, результат будет:

>>> df
    Category    Count
0   Objects      3
1   Fruits       5
0 голосов
/ 04 октября 2018

Использование map для получения ключа groupby

s=pd.concat([df1,df2]).stack()

df.groupby(df.Category.map(dict(zip(s,s.index.get_level_values(1))))).Count.sum()
Out[232]: 
Category
Fruit     5
Object    4
Name: Count, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...