在python中连接数据帧列
我有一个叫做X的数据帧 X有3列(单色、单色、单色) Uni是字符串,Sub是字符串 但是颜色是字符串的数组 X中的数据如下所示在python中连接数据帧列,python,arrays,dataframe,Python,Arrays,Dataframe,我有一个叫做X的数据帧 X有3列(单色、单色、单色) Uni是字符串,Sub是字符串 但是颜色是字符串的数组 X中的数据如下所示 Uni Sub Colours ----- ------ ------- Melb Math (Red, Blue, Green) Melb English (Yellow, Blue, Brown, White) Sydney Math (Green, Pink, Red, White, Black) Syd
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)
Melb;Math;Red, Blue, Green|Melb;English;Yellow, Blue, Brown, White|Sydney;Math;Green, Pink, Red, White, Black| ...
Melb Math Red\n1 Blue\n2 Green\n3
Melb English Yellow\n1 Blue\n2 Brown\n3 White\n4
.
.
.
我正在尝试将这些列合并为一个字符串,以便将其传递给SQL存储过程
我想要的结果应该是这样的
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)
Melb;Math;Red, Blue, Green|Melb;English;Yellow, Blue, Brown, White|Sydney;Math;Green, Pink, Red, White, Black| ...
Melb Math Red\n1 Blue\n2 Green\n3
Melb English Yellow\n1 Blue\n2 Brown\n3 White\n4
.
.
.
其中,用分号分隔的列;和用条隔开的行|
我有这个密码
MyString = X[['Uni', 'Sub', 'Colours']].apply(lambda x: ';'.join(x), axis = 1)
但是我犯了这个错误
TypeError:序列项2:应为str实例,找到元组
所以我改成了这个
X["Codes"] = ",".join(map(str, X["Codes"]))
MyString = X[['PtsID', 'VisitID', 'Codes']].apply(lambda x: ';'.join(x), axis = 1)
但是最终结果不是我想要的,因为它是一个列表,看起来是这样的
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)
Melb;Math;Red, Blue, Green|Melb;English;Yellow, Blue, Brown, White|Sydney;Math;Green, Pink, Red, White, Black| ...
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
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)
用于:
@asmgx请把答案也投上去。@asmgx请把答案也投上去。