将每个实例多 class 转换为每个实例 class - Python
Transform Multi-class per Instance Into a class per Instance - Python
我目前正在探索 CSV 格式的数据集,其值如下所示:
example 1, class 1
example 2, class 1, class 2
example 3, class 2,
example 4, class 1, class 2, class 4
如您所见,classes 以可变长度分配给每个示例。是否有任何方法(使用 numpy 或 pandas)可以帮助我将此数据转换为每个实例一个 class?就像下面这样:
example 1, class 1
example 2, class 1
example 2, class 2
example 3, class 2
example 4, class 1
example 4, class 2
example 4, class 4
我这样做是为了可以轻松地将其输入神经网络模型。我在 pandas 中尝试了几种方法,但到目前为止还没有成功。
我会使用 Python 的字符串操作和理解。
m = lambda x: map(str.strip, x.split(','))
with open('test.csv') as f:
df = pd.DataFrame(
[[x, y] for x, *ys in map(m, f.readlines()) for y in ys if y],
columns=['Example', 'Class']
)
df
Example Class
0 example 1 class 1
1 example 2 class 1
2 example 2 class 2
3 example 3 class 2
4 example 4 class 1
5 example 4 class 2
6 example 4 class 4
我目前正在探索 CSV 格式的数据集,其值如下所示:
example 1, class 1
example 2, class 1, class 2
example 3, class 2,
example 4, class 1, class 2, class 4
如您所见,classes 以可变长度分配给每个示例。是否有任何方法(使用 numpy 或 pandas)可以帮助我将此数据转换为每个实例一个 class?就像下面这样:
example 1, class 1
example 2, class 1
example 2, class 2
example 3, class 2
example 4, class 1
example 4, class 2
example 4, class 4
我这样做是为了可以轻松地将其输入神经网络模型。我在 pandas 中尝试了几种方法,但到目前为止还没有成功。
我会使用 Python 的字符串操作和理解。
m = lambda x: map(str.strip, x.split(','))
with open('test.csv') as f:
df = pd.DataFrame(
[[x, y] for x, *ys in map(m, f.readlines()) for y in ys if y],
columns=['Example', 'Class']
)
df
Example Class
0 example 1 class 1
1 example 2 class 1
2 example 2 class 2
3 example 3 class 2
4 example 4 class 1
5 example 4 class 2
6 example 4 class 4