python - 熊猫数据框如何用多个替换单列
问题描述
例如,我有一个数据框,例如:
col1 col2 col3
0 2 1
我想更换它,这样
{0: [a,b], 1: [c,d], 2: [e, f]}
所以我想最终得到一个这样的数据框:
col1 col1b col2 col2b col3 col3b
a b e f c d
我想在转换后将这些数据输入到 tensorflow 中,所以如果 tensorflow 接受它,下面的输出也可能是可接受的?
col1 col2 col3
[a,b] [e,f] [c,d]
以下是我当前的代码:
field_names = ["elo", "map", "c1", "c2", "c3", "c4", "c5", "e1", "e2", "e3", "e4", "e5", "result"]
df_train = pd.read_csv('input/match_results.csv', names=field_names, skiprows=1, usecols=range(2, 13))
for count in range(1, 6):
str_count = str(count)
df_train['c' + str_count] = df_train['c' + str_count].map(champ_dict)
解决方案
IIUC,您可以使用.stack
.map
和.cumcount
重塑您的数据框和索引。
import pandas as pd
from string import ascii_lowercase
col_dict = dict(enumerate(ascii_lowercase))
map_dict = {0: ['a','b'], 1: ['c','d'], 2: ['e', 'f']}
s = df.stack().map(map_dict).explode().reset_index()
s['level_1'] = s['level_1'] + s.groupby(['level_1','level_0']).cumcount().map(col_dict)
df_new = s.set_index(['level_0','level_1']).unstack(1).droplevel(0,1).reset_index(drop=True)
print(df_new)
level_1 col1a col1b col2a col2b col3a col3b
0 a b e f c d
推荐阅读
- image - 将背景图像添加到选项卡控件时,Powershell 表单闪烁
- python - 为什么八面体和立方体的表面积与体积比之比是一个常数,却没有反映在我的程序中?
- next.js - 存储访问令牌和刷新令牌 NextJS
- javascript - 未正确检索机器人和人员的数量
- typescript - 是否可以在 TypeScript 中正确键入具有额外行为的生成器函数?
- python - 无法从“dolfin”导入名称“log”
- x86 - JIT 编译器的 ELF 文件结构是什么?
- sql - SQL Server 中 Postgres 的窗口别名的等价物
- solidity - 带有 Ethers.js 的 Solidity 后备功能
- node.js - 如何正确组织快速端点