我想知道在链接构建数据帧的方法时是否可以使用pandas .drop
方法删除行。
数据框存在后,直接删除行即可:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [5, 4, 3]})
print(df1)
# drop the entries that match "2"
df1 = df1[df1['A'] !=2]
print(df1)
但是,我想在创建数据框时这样做:
df2 = (pd.DataFrame({'A': [1, 2, 3], 'B': [5, 4, 3]})
.rename(columns={'A': 'AA'})
# .drop(lambda x: x['A']!=2)
)
print(df2)
注释行不起作用,但是也许有一种正确的方法。感谢您的任何投入。
答案 0 :(得分:4)
将DataFrame.loc
与callable一起使用:
df2 = (pd.DataFrame({'A': [1, 2, 3], 'B': [5, 4, 3]})
.rename(columns={'A': 'AA'})
.loc[lambda x: x['AA']!=2]
)
df2 = (pd.DataFrame({'A': [1, 2, 3], 'B': [5, 4, 3]})
.rename(columns={'A': 'AA'})
.query("AA != 2")
)
print(df2)
AA B
0 1 5
2 3 3
答案 1 :(得分:1)
您可以将DataFrame.apply与DataFrame.dropna结合使用:
df2 = (pd.DataFrame({'A': [1, 2, 3], 'B': [5, 4, 3]})
.rename(columns={'A': 'AA'})
.apply(lambda x: x if x['AA'] !=2 else np.nan,axis=1).dropna()
)
print(df2)
AA B
0 1.0 5.0
2 3.0 3.0
答案 2 :(得分:0)
也许您可以在定义行代码的末尾尝试使用“ .loc”进行选择。