Python 比较CSV文件中两列的数据
谢谢你在这方面的帮助。我有7个CSV文件(格式都相同),我已经连接到一个帧中。我的目标是比较CSV中的两列,找出“运行”列中的“完成”一词在“日期”列中的每个日期上出现的次数。到目前为止,我写的是:Python 比较CSV文件中两列的数据,python,Python,谢谢你在这方面的帮助。我有7个CSV文件(格式都相同),我已经连接到一个帧中。我的目标是比较CSV中的两列,找出“运行”列中的“完成”一词在“日期”列中的每个日期上出现的次数。到目前为止,我写的是: path = r'C:\Users\rock\Desktop\workspace\MTS_subs' all_files = glob.glob(path + "/*.csv") li = [] for filename in all_files:
path = r'C:\Users\rock\Desktop\workspace\MTS_subs'
all_files = glob.glob(path + "/*.csv")
li = []
for filename in all_files:
df = pd.read_csv(filename, index_col=None, header=0)
li.append(df)
frame = pd.concat(li, axis=0, ignore_index=True)
counter = frame['Ran'].value_counts()
date_counter = frame['Date'].value_counts()
print(counter, date_counter)
这将打印出以下内容:
Active 1739
Done 840
Name: Ran, dtype: int64 18/06/2020 402
19/06/2020 300
17/06/2020 266
25/06/2020 264
22/06/2020 224
16/06/2020 214
23/06/2020 208
24/06/2020 208
26/06/2020 184
15/06/2020 180
21/06/2020 76
14/06/2020 46
20/06/2020 4
13/06/2020 3
Name: Date, dtype: int64
因此,在所有7个CSV中,“完成”一词出现了840次,但我想知道每个日期上“完成”出现了多少次
这件事让我挠头已经有一段时间了。非常感谢您的任何帮助或意见
(frame['Ran']='Done')。groupby(frame['Date'])。sum()
应该可以做到这一点。下面是一个模拟发布的屏幕截图的示例
>>frame=pd.DataFrame({
…日期:['13/06/2020']*3+['15/06/2020']*2+['14/06/2020']*12,
…'Ran':['Done']*17
... })
>>>框架
日期运行
0 2020年6月13日完成
1 2020年6月13日完成
2 2020年6月13日完成
3 2020年6月15日完成
4 2020年6月15日完成
5 2020年6月14日完成
2020年6月14日完成
7 2020年6月14日完成
2020年6月8日14日完成
9 2020年6月14日完成
2020年6月10日14日完成
11 2020年6月14日完成
2020年6月12日14日完成
14/06/2020完成
2020年6月14日完成
15 14/06/2020完成
16 2020年6月14日完成
>>>(frame['Ran']=='Done').groupby(frame['Date']).sum()
日期
13/06/2020 3.0
14/06/2020 12.0
15/06/2020 2.0
名称:Ran,数据类型:float64
我假设它涉及一个名为filter
的函数或方法,以仅过滤具有行[“Ran”]==“Done”
的行,然后执行df['Date']
关于这一点,但我不熟悉pandas的具体语法,无法给出工作示例。您有一个CSV文件的示例吗?添加了一个CSV文件的剪报。您的意思是什么?抛出一个错误,或者没有得到正确的结果?是的,我现在让它工作,可能是一个复制粘贴错误。非常感谢你的帮助。这太棒了!