我是Pandas的新手,并试图将有关神经网络问题的训练数据汇总在一起。
本质上,我有2个DataFrame:
一个 DataFrame 有一个用于 primary_key 的列和用于 3 个不同位置的 3 列(运动位置,对于本示例,如果您愿意,假设为一垒、二垒、三垒)。每个位置都有该位置的玩家的玩家 ID。
在第二个DataFrame上,我有每个球员的各种统计数据,例如身高和体重。
我的最终目标是将第二个DataFrame中的列添加到第一个DataFrame中,以便每个位置具有与特定玩家相关的身高和体重(以列表示)。然后,我要将这个 DataFrame 导出为 csv,按特定顺序排列列,并将其用于我的训练数据,其中每一列是一个训练特征,每一行是一个训练集。我已经找到了一个解决方案,但我想知道我是否以最有效的方式来做,充分利用 Pandas 的功能和特性。
这是我的代码的样子: ****编辑:我应该指出,这只是我的代码外观的简化。实际上,我的 DataFrame 是从 CSV 中提取的,而不是从我自己创建的字典中构建的。****
import pandas as pd
dict_1 = {'primary_key' : ['a', 'b', 'c', 'd'],
'position_1_ID' : ['ida', 'idb', 'idc', 'idd'],
'position_2_ID' : ['ide', 'idb', 'idg', 'idd'],
'position_3_ID' : ['idg', 'idf', 'idc', 'idh']
}
dict_2 = {'position_ID' : ['ida', 'idb', 'idc', 'idd', 'ide', 'idf', 'idg', 'idh'],
'Height' : ['70', '71', '72', '73', '74', '75', '76', '77'],
'Weight' : ['200', '201', '202', '203', '204', '205', '206', '207']
}
positions = pd.DataFrame(dict_1)
players = pd.DataFrame(dict_2)
position_columns = ['position_1_ID', 'position_2_ID', 'position_3_ID']
carry = positions
previous = None
for p in position_columns:
merged = carry.merge(right = players, left_on = p, right_on = 'position_ID', suffixes = [previous, p] )
carry = merged
previous = p
carry.to_csv()
运行此代码后,我有一个包含以下列的 DataFrame:
'首要的关键'
'位置_1_ID'
“ position_2_ID”
'position_3_ID'
'position_IDposition_1_ID'
'position_IDposition_2_ID'
'position_IDposition_3_ID'
'高度位置_1_ID'
'权重位置_1_ID'
'高度位置_2_ID'
'重量位置_2_ID'
'Heightposition_3_ID'
'Weightposition_3_ID'
这并不漂亮,但这使我能够最终导出具有特定列顺序的 csv,并且生成 DataFrame 不会花费太长时间。
话虽这么说,我正在做这个项目的一部分是为了学习熊猫。我想看看是否有更清洁的方法可以做到这一点。
胡子哥哥
相关分类