我的数据框看起来像这样,只是更大.
d = {'Col_1' : pd.Series(['A', 'B']),
'Col_2' : pd.Series(['B', 'A', 'C']),
'Col_3' : pd.Series(['B', 'A']),
'Col_4' : pd.Series(['C', 'A', 'B', 'D']),
'Col_5' : pd.Series(['A', 'C']),}
df = pd.DataFrame(d)
Col_1 Col_2 Col_3 Col_4 Col_5
A B B C A
B A A A C
NaN C NaN B NaN
NaN NaN NaN D NaN
首先,我试图单独对每列进行排序.我尝试过类似的东西:df.sort([lambda x:x in df.columns],axis = 1,ascending = True,inplace = True)但是最终只有错误.如何对每个列进行单独排序,最终得到如下结果:
Col_1 Col_2 Col_3 Col_4 Col_5
A A A A A
B B B B C
NaN C NaN C NaN
NaN NaN NaN D NaN
其次,我希望连接列中的行
df = pd.concat([df,pd.DataFrame(df.sum(axis=0),columns=['Concatenation']).T])
在用”替换np.nan之后,我可以将所有内容与上面的行组合在一起,但结果会一起被粉碎(‘AB’)并需要额外的步骤来清理(像’A:B’之类的东西).
解决方法:
这是一种方式:
>>> pandas.concat([df[col].order().reset_index(drop=True) for col in df], axis=1, ignore_index=True)
11: 0 1 2 3 4
0 A A A A A
1 B B B B C
2 NaN C NaN C NaN
3 NaN NaN NaN D NaN
[4 rows x 5 columns]
但是,你所做的有点奇怪. DataFrames不仅仅是不相关列的集合.在DataFrame中,每一行代表一条记录,因此一列中的值在语义上与同一行中其他列中的值相关联.通过独立地对列进行排序,您将丢弃此信息,因此行现在毫无意义.这就是我的例子中需要reset_index的原因.此外,正因为如此,没有办法就地执行此操作,您的示例建议您这样做.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。