Python 将某些列的每一行合并到一个列表中

Python 将某些列的每一行合并到一个列表中,python,pandas,Python,Pandas,我有一个这样的数据帧 P1A P1B P1C P1D P1E P2A P2B P2C P2D P2E 0 4S 4S 4S 4S 4S AC AC AC AC AC 1 9C 9C 9C 9C 9C KS KS KS KS KS 2 JS JS JS JS JS 8S 8S 8S 8S 8S 3 TC TC TC TC TC JS JS JS JS JS . . . 我想要的是获取

我有一个这样的数据帧

   P1A  P1B  P1C  P1D  P1E P2A  P2B  P2C  P2D  P2E
0   4S  4S  4S  4S  4S  AC  AC  AC  AC  AC
1   9C  9C  9C  9C  9C  KS  KS  KS  KS  KS
2   JS  JS  JS  JS  JS  8S  8S  8S  8S  8S
3   TC  TC  TC  TC  TC  JS  JS  JS  JS  JS
. . .  
我想要的是获取一些列名并将它们合并到一列中,将它们的数据存储为每行的列表,如下所示:

             P1                   P2
0   [4S  4S  4S  4S  4S]  [AC  AC  AC  AC  AC]
1   [9C  9C  9C  9C  9C]  [KS  KS  KS  KS  KS]
2   [JS  JS  JS  JS  JS]  [8S  8S  8S  8S  8S]
3   [TC  TC  TC  TC  TC]  [JS  JS  JS  JS  JS]
. . .  

我如何才能做到这一点?谢谢大家!

您可以在每个列组上应用lambda:

In [45]:
one_cols = df.columns[df.columns.str.contains('1')]
two_cols = df.columns[df.columns.str.contains('2')]
df['P1'] = df[one_cols].apply(lambda x: [' '.join(x)], axis=1)
df['P2'] = df[two_cols].apply(lambda x: [' '.join(x)], axis=1)
df

Out[45]:
  P1A P1B P1C P1D P1E P2A P2B P2C P2D P2E                P1                P2
0  4S  4S  4S  4S  4S  AC  AC  AC  AC  AC  [4S 4S 4S 4S 4S]  [AC AC AC AC AC]
1  9C  9C  9C  9C  9C  KS  KS  KS  KS  KS  [9C 9C 9C 9C 9C]  [KS KS KS KS KS]
2  JS  JS  JS  JS  JS  8S  8S  8S  8S  8S  [JS JS JS JS JS]  [8S 8S 8S 8S 8S]
3  TC  TC  TC  TC  TC  JS  JS  JS  JS  JS  [TC TC TC TC TC]  [JS JS JS JS JS]

尝试此操作会引发AttributeError:“Index”对象没有属性“str”。您需要报告哪一行报告了错误,我假设这是第一行,您运行的是哪个版本,这在版本
0.16.2
上起作用。是的,这是第一行。0.15.2您可以升级吗?否则,将行更改为该行,它应该可以工作
one_cols=df.columns[pd.Series(df.columns).str.contains('1')]