Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中连接数据帧列_Python_Arrays_Dataframe - Fatal编程技术网

在python中连接数据帧列

在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

我有一个叫做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)
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请把答案也投上去。