Pandas - 删除函数
Pandas - drop function
我想根据特定列的值在列表中的条件从数据框中删除行。如果不是这种情况,我希望删除该行。
你有什么建议吗?提前致谢
例如,如果列 'C' 中的值不在列表 l 内,我想删除整行
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(20, 4)), columns=list('ABCD'))
l = [4, 6, 23, 45, 79]
df = df[df.apply(lambda x: any(x.isin(l)), axis=1)]
如果只有一列必须
如果只有 C
:
df[df.apply(lambda x: x["C"] in l, axis=1)]
或者,如果所有列:
df = df[df.apply(lambda x: all(x.isin(l)), axis=1)]
你可以这样试试:
df = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=["a", "b"])
df[(df.a.isin([3]) == False)]
这只会将那些行留在数据框中,其 a-value 不在给 isin 的列表中,即它不是 3.
我想根据特定列的值在列表中的条件从数据框中删除行。如果不是这种情况,我希望删除该行。
你有什么建议吗?提前致谢
例如,如果列 'C' 中的值不在列表 l 内,我想删除整行
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(20, 4)), columns=list('ABCD'))
l = [4, 6, 23, 45, 79]
df = df[df.apply(lambda x: any(x.isin(l)), axis=1)]
如果只有一列必须
如果只有 C
:
df[df.apply(lambda x: x["C"] in l, axis=1)]
或者,如果所有列:
df = df[df.apply(lambda x: all(x.isin(l)), axis=1)]
你可以这样试试:
df = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=["a", "b"])
df[(df.a.isin([3]) == False)]
这只会将那些行留在数据框中,其 a-value 不在给 isin 的列表中,即它不是 3.