仅使用数字数据在Pandas的剪辑上获取无法排序的类型

时间:2017-09-02 19:59:17

标签: python pandas dataframe

我正在研究我的第一个Pandas数据探索笔记本,我遇到了一些Pandas操作的问题,比如标题HashSet<List<Integer>> set = new HashSet<List<Integer>>(){ @Override public String toString(){ return "some random text"; } }; //Code that assigns some values to the set variable for(List<Integer>subSequence:set){ System.out.println(subSequence.toString()); } //Still prints the values in the Lists

我有一个包含以下列和数据类型的数据框: clip 我想根据经度删除一些异常值行。我以为熊猫的 kairaId object sex object primaryPerson bool birthDay float64 birthMonth float64 birthYear float64 deathYear float64 ownHouse object returnedKarelia object previousMarriages object pageNumber object sourceTextId object professionId int64 professionName object placeName object region object stemmedName object extractedName object latitude float64 longitude float64 children_count int64 migration_count float64 dtype: object 会做到这一点:

clip 然而,这导致df = df.clip(None, upper=50.0, axis='longitude')

我意识到Pandas正在尝试比较strs和float会导致Python 3中的错误,但我不明白为什么,也不知道如何绕过这个问题。显然其他一些专栏的内容会干扰这个?我在尝试其他一些Pandas操作时也遇到了错误。

More context in the form of Jupyter notebook

我的数据框架中是否存在根本错误?任何与此问题相关的文档?我今晚刚刚选择了Pandas,所以我还不确定哪些文档是相关的,或者数据框架是如何操作的。我可能会拿起一本关于这个主题的书。

1 个答案:

答案 0 :(得分:1)

我认为你误解了df.clip的使用 - 它意味着将异常值符合某个特定的外界,而不是删除它们。文档中的一个例子:

df

          0         1
0  0.335232 -1.256177
1 -1.367855  0.746646
2  0.027753 -1.176076
3  0.230930 -0.679613
4  1.261967  0.570967

df.clip(None, 0.5)

          0         1
0  0.335232 -1.256177
1 -1.367855  0.500000
2  0.027753 -1.176076
3  0.230930 -0.679613
4  0.500000  0.500000

此外,axis参数将引用0或1(沿行或列应用)。它根本没有引用列。

在您的情况下,您要删除与异常值经度相关联的所有记录。为此,您应该使用df.filterdf.maskdf.query甚至boolean indexing的内容:

mask = (df.longitude <= 50.0)
df = df[mask]