Python 将数据帧单元格值与序列进行比较,然后求和
假设我有熊猫数据帧,如图所示(df_All) 和2只这样的熊猫系列(df_水果,df_对象) 我想将数据帧与序列进行比较,这样我就可以得到如下表所示的总和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
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以获得最佳答案