将多列列表合并为 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]]})
我有一个 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]]})