python csv文件元素排序并省略重复项

时间:2018-11-03 11:41:25

标签: python pandas sorting duplicates

我编写了一个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手动删除了重复项。我可以使用任何方法解决此问题吗?

在此先感谢您提供的帮助!

1 个答案:

答案 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)