python - 在python中加入数据框列
问题描述
我有一个名为 X 的数据框
X有 3 列(Uni、Sub、Colors)
Uni 是字符串,Sub 是字符串
但 Colors 是一个字符串数组
X 中的数据如下所示
Uni Sub Colours
----- ------ -------
Melb Math (Red, Blue, Green)
Melb English (Yellow, Blue, Brown, White)
Sydney Math (Green, Pink, Red, White, Black)
Sydney Art (White, Pink)
Sydney Med (Yellow, Red, Pink, Brown, White, Black, Green)
Ottawa Math (Blue, Yellow)
Ottawa Physics (Red, Orange, Black)
我正在尝试将这些列加入一个字符串中,以便将其传递给 SQL 存储过程
我想要的结果应该是这样的
Melb;Math;Red, Blue, Green|Melb;English;Yellow, Blue, Brown, White|Sydney;Math;Green, Pink, Red, White, Black| ...
其中列用分号分隔;和由条分隔的行|
我有这个代码
MyString = X[['Uni', 'Sub', 'Colours']].apply(lambda x: ';'.join(x), axis = 1)
但我收到了这个错误
类型错误:序列项 2:预期的 str 实例,找到元组
所以我把它改成了这个
X["Codes"] = ",".join(map(str, X["Codes"]))
MyString = X[['PtsID', 'VisitID', 'Codes']].apply(lambda x: ';'.join(x), axis = 1)
但最终结果不是我想要的,因为它是一个列表,看起来像这样
Melb Math Red\n1 Blue\n2 Green\n3
Melb English Yellow\n1 Blue\n2 Brown\n3 White\n4
.
.
.
知道如何为单个字符串获得所需的格式吗?
解决方案
考虑df
:
In [346]: df = pd.DataFrame({'Uni':['Melb', 'Melb', 'Sydney', 'Sydney'], 'Sub':['Math', 'English', 'Math', 'Art'], 'Colours':[('Red', 'Blue', 'Green'), ('Yellow', 'Blue', 'Brown', 'White'), ('Green', 'Pink', 'Red', 'White', 'Black'), ('White', 'Pink')]})
...:
In [347]: df
Out[347]:
Uni Sub Colours
0 Melb Math (Red, Blue, Green)
1 Melb English (Yellow, Blue, Brown, White)
2 Sydney Math (Green, Pink, Red, White, Black)
3 Sydney Art (White, Pink)
df.agg
与 一起使用Series.str.cat
:
In [350]: df.Colours = df.Colours.apply(lambda x: ','.join(x))
In [352]: ans = df.agg(';'.join, 1).str.cat(sep='|')
In [353]: ans
Out[353]: 'Melb;Math;Red,Blue,Green|Melb;English;Yellow,Blue,Brown,White|Sydney;Math;Green,Pink,Red,White,Black|Sydney;Art;White,Pink'
推荐阅读
- c# - 如何确定一个值是由 NHibernate C# 还是由应用程序代码设置的?
- microservices - 事件溯源 - 事件流说明
- node.js - 如何将 webpack-dev-middleware 添加到现有节点/反应应用程序
- r - 如何在多个绘图的网格中将绘图调整为相同大小
- elasticsearch - Grok Pattern - 用于逗号分隔的数据
- amazon-web-services - 我可以使用不同区域中的节点 Lambda 更新另一个区域中的资源(如 Autoscalinggroup)吗?
- java - 如何实现流
在 Java 中没有资源泄漏警告 - r - 如何将权重纳入 WinBUGS 模型的可能性?
- html - 剪辑路径上的文本
- javascript - 有条件地设置来自 API 的数组值的样式