Python 从一个CSV中选择一个值列表,并获取不同CSV中列表值的计数

Python 从一个CSV中选择一个值列表,并获取不同CSV中列表值的计数,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我正在编写python代码,以计算CSV中某个列中出现的几个值 示例-CSV1如下所示 **Type Value** Simple test complex problem simple formula complex theory simple idea simple task 我需要得到类型simple和complex的值的内容,即 **Type Value** simple test simple formula simple idea simple task

我正在编写python代码,以计算CSV中某个列中出现的几个值

示例-CSV1如下所示

**Type  Value**
Simple  test
complex problem
simple  formula
complex theory
simple  idea
simple  task
我需要得到类型simple和complex的值的内容,即

**Type    Value**
simple  test
simple  formula
simple  idea
simple  task

complex theory
complex problem
并查询其他CSV,该CSV是CSV1,关于
简单列表即[测试、公式、想法、任务]和复杂列表即[理论、问题]

其他CSV2是

**Category**
test
test
test
formula
formula
formula
test
test
idea
task
task
idea
task
idea
task
problem
problem
theory
problem
problem
idea
task
problem
test
CSV1和CSV2都是动态的,以CSV1为例,类型为“simple”,获取相应值的列表,并参考CSV2了解每个值的计数。即测试计数、想法计数、任务计数、公式计数

复杂类型也一样 我用pandas尝试了多种方法,但没有预期结果。请使用任何指针。

使用:

df2['cat'] = df2['Category'].map(df1.set_index('Value')['Type'])

df2 = df2['cat'].value_counts().rename_axis('a').reset_index(name='b')
print (df2)
         a   b
0   simple  18
1  complex   6
使用:


很像@jezrael,但是我会首先使用第二个csv进行分组。如果第二个csv非常大,这将有助于合并

df2=cv2.groupby('value').agg(cnt=('value','count')).reset_index()
这将给我一个包含两列的数据帧,value和count

现在,您可以将其与CV1合并

df1 = cv1.merge(df2,on=['value'],how='inner')

很像@jezrael,但是我会首先使用第二个csv进行分组。如果第二个csv非常大,这将有助于合并

df2=cv2.groupby('value').agg(cnt=('value','count')).reset_index()
这将给我一个包含两列的数据帧,value和count

现在,您可以将其与CV1合并

df1 = cv1.merge(df2,on=['value'],how='inner')

和查询其他CSV的事件总数
-这意味着合并另一个数据框一个计数?是否可以向问题添加另一个数据并添加预期输出?
和查询其他CSV的事件总数
-这意味着合并另一个数据框一个计数?是否可以向问题添加另一个数据并添加预期输出ut?谢谢@jezrael,但是我没有让它工作。我已经编辑了我的问题,请你帮我复习一下好吗once@goe-好的,但mybe您忘记了从csv添加预期输出。输出是简单类型的值总数,以及复杂类型的值总数CSV2@goe这意味着存在重复项,需要
导入熊猫作为pddf1=pd.read_csv(“csv1.csv”)df2=pd.read_csv(“csv2.csv”)#print(df1)#print(df2)df1=df1.drop_duplicates('Value')df2['cat']=df2['Category'].map(df1.set_index('Value')['Type'])df2=df2['cat'].Value#计数().重命名_轴('a')。重置(索引('name='b')打印(df2)
@goe我认为有必要进行研究,找出失败的数据。如果在这个数据中工作,而不是在实际数据中工作,这是真正的数据问题。因此需要筛选前10、20、50、n行,找出数据失败的地方,然后在那里查找问题。谢谢@jezrael,但我没有找到这个工作。我已经编辑了我的问题,请您帮助重新编辑看法once@goe-好的,但mybe您忘记了从csv添加预期输出。输出是简单类型的值总数,以及复杂类型的值总数CSV2@goe这意味着存在重复项,需要
导入熊猫,因为pd df1=pd.read_csv(“csv1.csv”)df2=pd.read_csv(“csv2.csv”)#print(df1)#print(df2)df1=df1.drop_duplicates('Value')df2['cat']=df2['Category'].map(df1.set_index('Value')['Type'])df2=df2['cat'].Value_counts()。重命名_轴('a')。重置_index(name='b')打印(df2)
@goe我认为有必要进行研究,找出失败的数据。如果在这些数据中工作,而不是在实际数据中工作,这是真正的数据问题。因此需要筛选前10、20、50、n行,找出数据失败的地方,然后在那里查找问题。