【发布时间】:2022-01-09 21:07:49
【问题描述】:
我有一个数据框,其中包含一列来自国际象棋的FEN notations,我想拆分此列,格式为
2kr2nr/pp5p/3bpppP/1b1p4/8/1BB1P3/PP3PP1/R3K2R
分成 64 列 a1 到 h8,包含其中的字母,如果为空,则为 -。
功能有点复杂,应该不是问题的问题,但我问自己的是:
在 pandas 数据框中生成 64 列的最佳方法是什么?
我知道可以运行函数的应用函数之类的东西,但我只看到一列。 有没有一种聪明的方法可以一次对所有 64 列执行此操作?
对于那些想知道我所做的确切事情的人:
FEN 由八个由 / 分隔的子字符串组成,它们是第 8 到 1 行(是的,以相反的顺序)。 每个部分都说明了该行中八个字段的外观。如果有一个数字,它会告诉你有多少个空字段(从左到右),如果是一个字母,它会告诉你后面是哪一个。
所以在我上面的例子中,a8 和 b8 是空的(因为 2),然后有一个“k”,“r”,e8 和 h8 上还有两个空,然后是“n”和“ r"。一行中的 8 表示该行为空。
所以一个例子是: 输入:
2kr2nr/pp5p/3bpppP/1b1p4/8/1BB1P3/PP3PP1/R3K2R
输出:
a8 -
b8 -
c8 k
d8 r
e8 -
f8 -
g8 n
h8 r
a7 p
b7 p
c7 -
d7 -
e7 -
f7 -
g7 -
h7 p
...
a1 R
b2 -
c1 -
d1 -
e1 K
f1 -
g1 -
h1 R
【问题讨论】:
-
为什么要这样解析FEN?
-
机器学习
-
好的。我正在考虑使用像 python-chess 这样的工具来为您完成工作
标签: python pandas dataframe chess