python - pandas - 通过重复值连接列
问题描述
如果它们在字段中具有相同的值,我正在尝试连接我的数据框的列。我会自己解释。假设我有这个数据框:
peter brian peter mike brian
2 3 4 5 6
4 6 1 7 5
然后我想考虑第一行中重复的值来连接列:
peter brian mike
2 3 5
4 6 7
4 6
1 5
重要的是要澄清我不能通过直接调用名称(“peter”、“mike”等)来连接,因为我要使用它的数据框有数千列。这个想法是自动找到重复的名称并将它们连接起来。
解决方案
这是使用pd.concat
NumPy 数组的一种方法:
res = pd.concat([pd.Series(df[col].values.flatten(), name=col) \
for col in df.columns.unique()], axis=1)
print(res)
peter brian mike
0 2 3 5.0
1 4 6 7.0
2 4 6 NaN
3 1 5 NaN
注意mike
是强制的,float
因为它包含NaN
值。
解释
df.columns.unique
提取唯一的列名。df[col].values.flatten
从所有系列中提取特定名称的值作为 NumPy 数组,然后将它们展平为一维数组。pd.Series
将数组转换为系列对象。- 我们通过列表推导遍历所有这些唯一的列名。
pd.concat
将系列列表连接到数据框中。
推荐阅读
- c - 如果 Windows UAC 被拒绝,有没有办法让代码以较低的权限运行
- python - 使用漂亮的汤从网页中抓取某些文本
- javascript - 配置 i18next 以使用警告日志而不是默认信息级别
- discord.js - (Discord.js v12)提及参数?
- python - 如何检查日期是否在熊猫中有连续的行?
- json - iTunes 搜索播客 JSON API 存储库有时不返回“feedUrl”
- unix - 安装柠檬找不到ILOG COIN SOPLEX
- python - 我不明白我的数组有什么问题
- javascript - 图例未显示在折线图或条形图上 - React-Chartjs-2
- javascript - 如何在选择标签内添加功能搜索框