python-3.x - 熊猫数据框整列到字符串数据类型
问题描述
我知道你可以用一个系列来做到这一点,但我似乎不能用一个数据框来做到这一点。
我有以下内容:
name note age
0 jon likes beer on tuesdays 10
1 jon likes beer on tuesdays
2 steve tonight we dine in heck 20
3 steve tonight we dine in heck
我正在尝试制作以下内容:
name note age
0 jon likes beer on tuesdays 10
1 jon likes beer on tuesdays 10
2 steve tonight we dine in heck 20
3 steve tonight we dine in heck 20
我知道如何使用 group by 和 join 对字符串值执行此操作,但这仅适用于字符串值。我在将整个年龄列转换为数据框中的字符串数据类型时遇到问题。
有什么建议么?
解决方案
如果想重复每组的第一个值,请使用GroupBy.first
:GroupBy.transform
g = df.groupby('name')
df['note'] = g['note'].transform(' '.join)
df['age'] = g['age'].transform('first')
如果需要处理多个列 - 这意味着所有数字first
和所有字符串都可以通过连接生成字典,并通过函数的列名生成字典,传递给GroupBy.agg
和最后使用DataFrame.join
:
cols1 = df.select_dtypes(np.number).columns
cols2 = df.columns.difference(cols1).difference(['name'])
d1 = dict.fromkeys(cols2, lambda x: ' '.join(x))
d2 = dict.fromkeys(cols1, 'first')
d = {**d1, **d2}
df1 = df[['name']].join(df.groupby('name').agg(d), on='name')
推荐阅读
- magento - 模块上传到 packagegist 但无法通过终端安装
- python - 从列表中删除字典
- docker - 如果我在具有较旧内核的主机上运行 ubuntu 基础映像怎么办?
- javascript - 在最后一张幻灯片后继续滚动
- angular - 角度测试 - 生成覆盖率报告时出错
- javascript - 使用 Jest 测试组件
- javascript - Onkeypress 数字验证从 1 到 10
- android - 列表视图搜索
- r - navbarPage,Shiny R 中不同 tabPanel 上的相同输入
- webpack - 当目标模块在 node_modules 中时,Webpack 的别名不起作用