我有以下示例CSV文件。
,cid1,cid2,cid3
rid1,0.1,0.4,0.3
rid2,1.0,0.1,0.5
rid3,0.2,0.5,0.1
rid4,0.3,0.4,0.8
rid5,0.2,0.3,0.7
rid6,0.9,0.2,0.1
rid7,0.4,0.8,0.9
rid8,0.6,0.5,0.7
rid9,0.3,0.9,0.4
我想以以下格式显示所有大于0.4的单元格:
cid1 rid2 1.0 # Values are descending based on the first column.
cid1 rid6 0.9
cid1 rid8 0.6
# Blank lines are only for visibility (I don't need them)
cid2 rid9 0.9
cid2 rid7 0.8
cid2 rid3 0.5
cid2 rid8 0.5
cid3 rid7 0.9
cid3 rid4 0.8
cid3 rid5 0.7
cid3 rid8 0.7
cid3 rid2 0.5
到目前为止,我有以下代码,是根据我在上一个类似问题中来自@ rs95的注释创建的。但是,我太笨了,无法正常工作。该代码不会按每列的降序对值进行排序。
import pandas as pd
df = pd.read_csv("input.csv", index_col=0)
min_score = 0.4
s = df.unstack()
print(s[s >= min_score]
.reset_index()
.to_string(header=None, index=False))
您可以使用以下sort_values
方法:
import pandas as pd
df = pd.read_csv("file.csv", index_col=0)
min_score = 0.4
s = df.unstack()
s = s[s >= min_score].reset_index().sort_values(["level_0", 0], ascending=[True, False])
print(s.to_string(header=None, index=False))
输出:
cid1 rid2 1.0
cid1 rid6 0.9
cid1 rid8 0.6
cid1 rid7 0.4
cid2 rid9 0.9
cid2 rid7 0.8
cid2 rid3 0.5
cid2 rid8 0.5
cid2 rid1 0.4
cid2 rid4 0.4
cid3 rid7 0.9
cid3 rid4 0.8
cid3 rid5 0.7
cid3 rid8 0.7
cid3 rid2 0.5
cid3 rid9 0.4
的说明
.sort_values(["level_0", 0], ascending=[True, False])
第一个参数是by
参数,在这里我们决定要对哪些列进行排序DataFrame
。由于"level_0"
放在列表中的之前,0
因此列将首先按列排序"level_0"
。
该ascending
参数让我们决定是by
列表中的每个元素应按升序还是降序排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句