我编写了一个python脚本,该脚本创建了一个包含三行数字的文本文件;
4.54 67.66 71.27 NaN ,4.54 304.53
9.06 14.08 39.56 NaN ,4.54 307.65
3.85 61.22 90.14 108.13 ,6.13 400.50
这是由不同文本文件产生的串联数据帧。会有大量重复的数字,一些空元素等,因此我想按升序对它们进行排序,并消除所有重复项。
对于排序,我尝试使用df.sort_values
,但无法弄清楚如何对值进行排序。
对于重复项,我最初搜索熊猫来处理此问题(例如df.drop_duplicates
,转置数据,然后选择重复项/重新索引等);但是我只想消除每行中的重复值 ...我已经在同一地方停留了几天,并使用excel手动删除了重复项。我可以使用任何方法解决此问题吗?
在此先感谢您提供的帮助!
答案 0 :(得分:0)
如果这些列没有特定含义,则将其放到NumPy数组中可能会更容易。特别是,您可以使用pd.Series.drop_duplicates
逐行删除重复的条目,然后仅使用np.sort
进行排序:
In [152]: df
Out[152]:
0 1 2 3 4 5
0 4.54 67.66 71.27 NaN 4.54 304.53
1 9.06 14.08 39.56 NaN 4.54 307.65
2 3.85 61.22 90.14 108.13 6.13 400.50
In [153]: np.sort(df.apply(lambda x: x.drop_duplicates(), axis=1))
Out[153]:
array([[ 4.54, 67.66, 71.27, 304.53, nan, nan],
[ 4.54, 9.06, 14.08, 39.56, 307.65, nan],
[ 3.85, 6.13, 61.22, 90.14, 108.13, 400.5 ]])
如果相关,您当然可以将结果转换为pd.DataFrame
。如果愿意,也可以将行重复数据删除写为df.apply(pd.Series.drop_duplicates, axis=1)
。