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"]]})
上面的dataframe是通过读取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]]})
推荐阅读
- macos - MacOS 真实睡眠检测
- html - 单击按钮时显示模态 Boostrap
- ibm-mq - Payara SSL 队列连接
- android - java.lang.VerfyError:在 Android 11 中发送电子邮件
- powershell - 来自 C# 控制台应用程序的标准输出字符串
- python - 绘图时升序 df 显示为降序
- javascript - 在共享文件夹中旁加载 Office 加载项,插入我的加载项中没有可用的加载项
- javascript - 我想在 Nuxt.js 中使用 Filter 缩小范围后进行排序
- elasticsearch - Elasticsearch 聚合和过滤器返回不同的大小
- slack - 有没有办法在 Slack 中安装一个仅对安装它的用户可用的应用程序。(个人范围内的应用安装)