将多列列表合并为 pandas 中的单列

Merge list in multiple columns to a single column in pandas

我有一个 pandas 数据框,格式如下:

           0           1        2           3
A.pkl     [121,122]   [123]    [124,125]    [126,127]

列数也可能更多。最后,我想合并所有列中的所有值并将其写入单个列。

结果数据框:

           values          
A.pkl     [121,122,123,124,125,126,127]   

我使用下面的代码生成第一部分:

df = pd.DataFrame({
g: pd.read_pickle(f'{g}')['values'].tolist()
for g in groups
}).T

我试过使用 itertools.chain,但似乎没有用。

如有任何建议,我们将不胜感激。

输入数据帧:

 df = pd.DataFrame({'name': ['aa.pkl'],
               '0': [["001A000001", "003A0025"]],
               '1': [["003B000001","003C000001"]],
               '2': [["003D000001", "003E000001"]],
               '3': [["003F000001", "003G000001"]]})

上面的数据框是通过读取 pickle 文件生成的

实际上itertools.chain是一种方法,但你必须正确地做到:

from itertools import chain
df.apply(lambda x: list(chain(*x)), axis=1)

输出:

A.pkl    [121, 122, 123, 124, 125, 126, 127]
dtype: object

正如@QuangHoang 所建议的,您也可以使用 df.sum(axis=1) 技巧,但要小心,这仅适用于列表。如果出于某种原因你有 numpy 数组,这将执行每个位置的总和 ([494, 497])。

输入:

df = pd.DataFrame({'0': [[121, 122]],
                   '1': [[123]],
                   '2': [[124, 125]],
                   '3': [[126, 127]]})