我已经练习python一段时间了,刚进入熊猫就开始学习数据帧。我了解df.drop()会根据某些要求删除列/行,并创建新的df。我想知道,是否有一种方法可以将这些删除的列/行分配给新变量以进行记录?
import pandas as pd
L = ["a","b","c","d","a","a"]
df1 = pd.DataFrame(L)
df1.columns = ['letter']
#print(df1)
df2 = df1.drop(df1.letter == "a", axis=0)
print(df2)
letter
2 c
3 d
4 a #why is this row not removed?
5 a #why is this row not removed?
但是,这甚至都不会打印出新的df2,其中所有带有“ a”的行均被删除(此处存在单独的问题,不确定为什么会发生)。
将删除的列分配给新的df不起作用,因为它使用的是初始数据帧df1。我只是不确定如何制作两个数据框,一个仅包含删除的列,另一个删除其中的列。
我想要一个可以打印的df3:
letter
0 a
4 a
5 a
为您的情况创建一个遮罩。使用布尔索引根据条件选择要删除的行。然后df1
使用~
(不)反转遮罩来重新分配给。
mask = df1['letter'] == 'a'
removed_rows = df1[mask]
df1 = df1[~mask]
>>> df1
letter
1 b
2 c
3 d
>>> removed_rows
letter
0 a
4 a
5 a
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句