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')]