所以我正在尝试使用“删除不符合所需条件的行”下的方法,仅在我的数据框中包含行B的值小于列C的行:https://www.quora.com/How-should-I-delete-rows-from-a-DataFrame-in-Python-Pandas
它不起作用,只返回一个空白数据框
所以基本上它应该是这样的:
import pandas as pd
import numpy as np
import1 = pd.read_csv('./a_csv.csv')
import2 = pd.read_csv('./another_csv.csv')
df1 = import1[['A', 'B']]
df2 = import2[['A1', 'C']]
In[10]: df = pd.merge(df1, df2, left_on='A', right_on='A1').drop('A1', axis=1)
Out[10]:
A B C
a 01 2 2
b 02 5 6
c 03 8 8
d 04 1 5
In[11]: df = df.ix[~(df['B'] < df['C'])]
Out[11]:
A B C
a 02 5 6
b 04 1 5
但是第11行没有产生预期的结果。我究竟做错了什么?如果它们更容易或更有效,我会愿意使用ix以外的方法。
答案 0 :(得分:2)
两个问题
~
来否定面具。.ix
用于按名称和位置编制索引。通常,您希望使用.loc
或.iloc
,除非您有充分的理由不这样做。 .ix
实际上是deprecated,因为它很容易导致真正意想不到的结果。而不是你的第11行尝试:
df.loc[df['B'] < df['C']]
返回:
A B C
b 2 5 6
d 4 1 5