如何将包含 np.arrays 的两列合并为一列
How to combine two columns containing np.arrays to one column
我正在读取一个 CSV 文件,其中列中包含数组。我想将列中的列表连接到一个只包含一个列表的新列中,因为我必须对其进行一些转换。
d = {'col1': [[1,2], [1,2],[1,2]], 'col2': [[1,2], [], [1,2,4,5,6,7]]}
df = pd.DataFrame(data=d)
col1 col2
0 [1, 2] [1, 2]
1 [1, 2] []
2 [1, 2] [1, 2, 4, 5, 6, 7]
第一步,我将它们转换为数值数组。
df["col1"] = df['col1'].apply(lambda x : np.fromstring(str(x).replace('[','').replace(']',''), sep=',').astype(int))
df["col2"] = df['col2'].apply(lambda x : np.fromstring(str(x).replace('[','').replace(']',''), sep=',').astype(int))
在第二步中,我想将它们合并到一列中。
col1 col2 col3
0 [1, 2] [1, 2] [1, 2, 1, 2]
1 [1, 2] [] [1, 2]
2 [2, 3] [1, 2, 4, 5, 6, 7] [2, 3, 1, 2, 4, 5, 6, 7]
但我总是以
结束
col1 col2 col3
0 [1, 2] [1, 2] [[1, 2], [1, 2]]
1 [1, 2] [] [[1, 2], []]
2 [2, 3] [1, 2, 4, 5, 6, 7] [[2, 3], [1, 2, 4, 5, 6, 7]]
因为您可以在 Python 中使用加法 (+
) 将多个列表组合在一起(例如 [1,2] + [3,4] == [1,2,3,4]
),所以您可以使用 Pandas 系列做完全相同的事情.
因为这些项目是 numpy 数组,它们以不同的方式定义彼此的加法(即,将每个数组中的每个单独值加在一起形成一个相同形状的新数组,而不是像 Python list
s 做),您需要首先使用 .apply(list)
:
将 numpy 数组转换为 Python 列表
df['col3'] = df['col1'].apply(list) + df['col2'].apply(list)
我正在读取一个 CSV 文件,其中列中包含数组。我想将列中的列表连接到一个只包含一个列表的新列中,因为我必须对其进行一些转换。
d = {'col1': [[1,2], [1,2],[1,2]], 'col2': [[1,2], [], [1,2,4,5,6,7]]}
df = pd.DataFrame(data=d)
col1 col2
0 [1, 2] [1, 2]
1 [1, 2] []
2 [1, 2] [1, 2, 4, 5, 6, 7]
第一步,我将它们转换为数值数组。
df["col1"] = df['col1'].apply(lambda x : np.fromstring(str(x).replace('[','').replace(']',''), sep=',').astype(int))
df["col2"] = df['col2'].apply(lambda x : np.fromstring(str(x).replace('[','').replace(']',''), sep=',').astype(int))
在第二步中,我想将它们合并到一列中。
col1 col2 col3
0 [1, 2] [1, 2] [1, 2, 1, 2]
1 [1, 2] [] [1, 2]
2 [2, 3] [1, 2, 4, 5, 6, 7] [2, 3, 1, 2, 4, 5, 6, 7]
但我总是以
结束 col1 col2 col3
0 [1, 2] [1, 2] [[1, 2], [1, 2]]
1 [1, 2] [] [[1, 2], []]
2 [2, 3] [1, 2, 4, 5, 6, 7] [[2, 3], [1, 2, 4, 5, 6, 7]]
因为您可以在 Python 中使用加法 (+
) 将多个列表组合在一起(例如 [1,2] + [3,4] == [1,2,3,4]
),所以您可以使用 Pandas 系列做完全相同的事情.
因为这些项目是 numpy 数组,它们以不同的方式定义彼此的加法(即,将每个数组中的每个单独值加在一起形成一个相同形状的新数组,而不是像 Python list
s 做),您需要首先使用 .apply(list)
:
df['col3'] = df['col1'].apply(list) + df['col2'].apply(list)