处理itertools.compositions的输出并将其写入CSV文件(Python 3)

2024-10-16 20:42:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个输入CSV,它有100行10列,其中第一列是字符串标签,其他9列是浮点值

我阅读了带有熊猫的CSV,前5行如下所示:

[['Anthony Davis' 2.191359266 -0.545275764 2.408686585 0.368829354
  1.413600925 3.371063018 0.9817899609999999 0.508416433
  -0.16381826800000002]
 ['James Harden' 3.712298573 3.680018666 0.22391813 1.993855274
  2.7784244960000004 0.103329029 -1.304634296 2.796322195
  -4.1513332489999994]
 ['Paul George' 2.3398097719999997 2.51398761 0.737468703 0.374057125
  2.9202622839999997 -0.450148159 -0.814563895 1.157841271 -0.86777703]
 ['Stephen Curry' 2.3394297230000003 3.89603504 -0.281906053 0.878391884
  0.5097975 -0.5866199870000001 0.407062394 1.816503245 -1.08734512]
 ['Kevin Durant' 2.1524390959999997 0.43367967 0.334711432 1.121031871
  -0.520284678 0.9562055909999999 1.191524904 2.1526490419999997
  -1.3896951240000002]

我将此数据帧转换为名为“top”的NP数组,然后运行:

results = [x for x in itertools.combinations(top, 5)]

目标是创建5个玩家的所有可能组合(如果需要,我可以灵活地使用不同于5的数字)

结果是我得到了一个数组列表,例如第一个数组 该列表的元素results[0]如下所示:

(array(['Anthony Davis', 2.191359266, -0.545275764, 2.408686585,
       0.368829354, 1.413600925, 3.371063018, 0.9817899609999999,
       0.508416433, -0.16381826800000002], dtype=object), array(['James Harden', 3.712298573, 3.680018666, 0.22391813, 1.993855274,
       2.7784244960000004, 0.103329029, -1.304634296, 2.796322195,
       -4.1513332489999994], dtype=object), array(['Paul George', 2.3398097719999997, 2.51398761, 0.737468703,
       0.374057125, 2.9202622839999997, -0.450148159, -0.814563895,
       1.157841271, -0.86777703], dtype=object), array(['Stephen Curry', 2.3394297230000003, 3.89603504, -0.281906053,
       0.878391884, 0.5097975, -0.5866199870000001, 0.407062394,
       1.816503245, -1.08734512], dtype=object), array(['Kevin Durant', 2.1524390959999997, 0.43367967, 0.334711432,
       1.121031871, -0.520284678, 0.9562055909999999, 1.191524904,
       2.1526490419999997, -1.3896951240000002], dtype=object))

我的目标是处理这些数据,以便将其写入一个长CSV文件,其中每行的第一个元素是播放器的名称,接下来的9个元素对应于播放器的关联浮点值。这基本上与输入格式相同,唯一的区别是它不是10列中的100行,而是C(n,r)*r行,我计算为10列中的376437600行

重要的是,处理不会改变顺序,因为我的计划是最终使用该顺序为每个团队编号生成一个标记(输出文件的前5行将在团队1中,第6-10行将是团队2,第11-15行将是团队3,等等)

这感觉应该很容易,但我总是陷入所有东西的嵌套结构中。我已经广泛地搜索了stack overflow和其他站点,但我还没有找到一个足够适合我的类似示例


Tags: csv元素object数组团队arrayanthony浮点