将数据框中的列表解包为多个 TensorFlow 输入
Unpacking lists within a data frame into multiple TensorFlow inputs
所以我有一个类似于这样的 pandas 数据框:
col1
col2
col3
[0,1,0]
1
0
[1,0,0]
0
1
我想解压它,使其变成 5 列,因为显然 tensorflow
不支持嵌套列表。有没有有效的方法来实现这个?
您可以尝试合并列表 pandas
:
import pandas as pd
df = pd.DataFrame(data = {'col1': [[0,1,0], [1,0,0] ], 'col2': [1, 0], 'col3': [0, 1]})
df['col1-1'], df['col1-2'], df['col1-3'] = zip(*list(df['col1'].values))
df = df.drop('col1', axis=1)
print(df)
col2 col3 col1-1 col1-2 col1-3
0 1 0 0 1 0
1 0 1 1 0 0
或 numpy
:
import pandas as pd
import numpy as np
df = pd.DataFrame(data = {'col1': [[0,1,0], [1,0,0] ], 'col2': [1, 0], 'col3': [0, 1]})
col1 = np.vstack(df['col1'].values)
col23 = df[['col2', 'col3']].values
data = np.concatenate([col1, col23], axis=-1)
print(data)
[[0 1 0 1 0]
[1 0 0 0 1]]
所以我有一个类似于这样的 pandas 数据框:
col1 | col2 | col3 |
---|---|---|
[0,1,0] | 1 | 0 |
[1,0,0] | 0 | 1 |
我想解压它,使其变成 5 列,因为显然 tensorflow
不支持嵌套列表。有没有有效的方法来实现这个?
您可以尝试合并列表 pandas
:
import pandas as pd
df = pd.DataFrame(data = {'col1': [[0,1,0], [1,0,0] ], 'col2': [1, 0], 'col3': [0, 1]})
df['col1-1'], df['col1-2'], df['col1-3'] = zip(*list(df['col1'].values))
df = df.drop('col1', axis=1)
print(df)
col2 col3 col1-1 col1-2 col1-3
0 1 0 0 1 0
1 0 1 1 0 0
或 numpy
:
import pandas as pd
import numpy as np
df = pd.DataFrame(data = {'col1': [[0,1,0], [1,0,0] ], 'col2': [1, 0], 'col3': [0, 1]})
col1 = np.vstack(df['col1'].values)
col23 = df[['col2', 'col3']].values
data = np.concatenate([col1, col23], axis=-1)
print(data)
[[0 1 0 1 0]
[1 0 0 0 1]]