python - 循环遍历不同的 Dataframes Pandas
问题描述
你好世界,
我有 52 个数据帧(df 和数据),每个数据帧只包含带有字母首字母的名称。
下面是字母 A 和 B 的示例(包含在 df 和数据中)
dfA dfB
Code Name Code Name
15 Amiks 68 Bernard
157 Alis 14 Barpti
dataA dataB
Code Name Code Name
Amiks Berti
Alis Bernard
Anatole Barpti
问题:
不是 Python 专家,如何循环使用相同字母的数据帧?而不是寻找所有的数据框,而只是寻找相同的字母。
例如:检查是否:
- dataA.Name 在 dfA.Name 中?
- dataB.Name 在 dfB.Name 中?
- dataZ.Name 在 dfZ.Name 中?
编辑
原始DF如下
df data
Code Name Code Name
15 Amiks Amiks
157 Alis Alis
14 Barpti Bernard
68 Bernard Barpti
我刚刚为每个第一个字母创建了一个 df 。
目的是加快计算时间并避免在整个 DF 内进行检查,因为我们只能检查具有相同首字母的行。
感谢任何人的帮助。
解决方案
你应该认为变量名只对你有意义,对 Python 解释器没有意义。当然,使用locals()
or也有一些不雅的方法,globals()
但它们永远不应该在普通代码中使用。
这意味着您的数据框是相关的,您应该使用数据结构来跟踪关系。您可以使用 2 个列表或一对列表,例如:
dataframes = [ (dfA, dataA), (dfB, dataB), ...]
如果字母本身很重要,您可以使用字典:
dataframes = { 'A': (dfA, dataA), 'B': (dfB, dataB), ...}
然后你可以很容易地迭代:
for letter in dataframes:
commons = dataframes[letter][0].merge(dataframes[letter][1], on='Name',
suffixes=('_x', ''))[['Code', 'Name']]
# process commons which contains code and name where datax.Name is in dfx.Name
...
但除非原始数据帧真的很大,否则我建议您将具有首字母方式的单个数据帧与 52 个数据帧进行基准测试。熊猫如果相当高效,只要一切都适合内存......
推荐阅读
- r - 基于字符名称的颜色编码点
- react-native - expo react-native FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
- math - 如果我们能够选择数字的形式,如何找出哪些数字的总和
- python - AttributeError:“BaseQuery”对象没有属性“is_authenticated”
- python - 单击下载 CSV 图像以在 Selinium python 中下载 CSV 文件
- scala - 播放框架 - 文件不可写
- mysql - 来自三个表的 PDO 一对多查询
- r - 用于将具有负差异分数的数据模拟为行的 for 循环中的错误
- xamarin.forms - xamarin.forms:仅在 ios 项目中的 PCL 中不再找到 AppTrackingTransparency
- python - 为什么 SIGTERM 处理会弄乱 Pool.map() 处理?