所以我有一个数据帧字典,我现在把它分解成单个的数据帧,因为我不知道如何直接在字典中处理它。例如,它们是看起来像这样的试样的结果
T01
mm N Cycle
a 1 1
b 2 1
c 3 2
d 4 2
e 5 3
... ... ...
现在我制作了另一个数据帧(也尝试了列表),如下所示:
Cycles
1
3
5
...
我的目标是过滤掉每一行
Cycle != Cycles
所以我得到一个如下的列表:
mm N Cycle
a 1 1
b 2 1
e 5 3
f 6 3
... ... ...
我通过以下代码创建了数据帧:
for k,v in data_dict.items():
globals()[k] = (v[['mm','N', 'Unnamed: 3']])
globals()[k].columns = ['mm', 'N', 'Cycles']
现在我有7个不同的数据帧,大小从(2570,3)到(12402,3)不等。你知道吗
我一直在四处寻找,但似乎找不到一个可行的办法。也许我不该用globals()[k]调用?我对python还比较陌生,所以我缺乏很多知识。先谢谢你
编辑:我一直在尝试像这样的布尔操作
globals()[k].query("Cycle" != Cycles['Cycles'])
或者
globals()[k][globals()[k].Cycle != Cycles['Cycles']]
但这对我没有任何帮助。你知道吗
所以你有一个数据帧的dict,我们称之为
data_dict
和一个循环列表Cycles
。你说你不知道如何处理一组数据帧,但是一旦你知道如何处理一个数据帧,那实际上是最简单的部分,因为你只需要在它上面循环。 要解决您的问题,只需使用
isin
方法:假设您有一个要筛选的周期列表:
现在给定一个dataframes
data_dict
字典,您可以使用带有布尔掩码的字典理解来筛选满足条件的行:这假设每个数据帧都有一个
Cycles
序列。pd.Series.isin
返回一系列用于索引数据帧的布尔值。你知道吗此外,请注意使用
globals()
的原因非常罕见;您应该尽可能避免调用globals
。你知道吗像这样的?你知道吗
例如,您的数据帧定义为:
测试=pd.数据帧({'mm':['1','b','c','d','e'],'N':[1,2,3,4,5],'Cycle':[1,1,2,2,3]})
测试2=pd.数据帧({'Cycles':[1,3,5]})
要筛选出列:
test3=测试[测试周期.isin(试验2.循环)]
出[19]: 循环N mm 0 1 1 1 1 1 2 b 4 3 5东
相关问题 更多 >
编程相关推荐