Python 将数据帧单元格值与序列进行比较,然后求和

Python 将数据帧单元格值与序列进行比较,然后求和,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有熊猫数据帧,如图所示(df_All) 和2只这样的熊猫系列(df_水果,df_对象) 我想将数据帧与序列进行比较,这样我就可以得到如下表所示的总和 Category Count 0 Fruit 5 1 Object 4 我尝试的是使用循环函数并进行如下比较 def getCategoryCount(row): food_count = 0 for value in df_Fruit['Fruit']: if row['Catego

假设我有熊猫数据帧,如图所示(df_All)

和2只这样的熊猫系列(df_水果,df_对象)

我想将数据帧与序列进行比较,这样我就可以得到如下表所示的总和

  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)
然而,我是这样填写的

0 1
1 0
2 4
3 0
我可以使用
df.sum()
获取值,但每次只能对序列进行计算,因为如果我在
getCategoryCount
中放入另一个for循环,它将对整个df进行求和


如果可能,我希望使用
map
获取
groupby
键以数据帧的形式返回
getCategoryCount

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

使用
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

我首先将这些类别分为以下两个列表:

fruits = list(fruits)
objects = list(objects)
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_all
进行切片,并对
Count
列求和,得到
df
定义如下:

fruits = list(fruits)
objects = list(objects)
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

我首先将这些类别分为以下两个列表:

fruits = list(fruits)
objects = list(objects)
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_all
进行切片,并对
Count
列求和,得到
df
定义如下:

fruits = list(fruits)
objects = list(objects)
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

你的意思是df1=df_Fruit,df2=df_Object?@Fahmieyz yes:-)我尝试了你发送的代码,但是当检查df=pd.DataFrame(df_All['Category'].map(dict(s,s.index.get_level_value(1 k k)'))时,我尝试了你发送的代码,但是当检查df=pd.DataFrame(df'Category'.['Category'])map(dict)时,我尝试了你发送的代码(s,s.index.get_level_values(1‘‘‘‘)’)它缺少count我喜欢文的方法在这个问题上,尽管我没有得到我想要的总数,但我必须Nde Samuel Mbah以获得最佳答案我喜欢文的方法在这个问题上,尽管我没有得到我想要的总数,但我必须Nde Samuel Mbah以获得最佳答案