我确定这是在某处,但我似乎找不到。我正在尝试删除或选择columns
中的指定pandas df
。但是我想保留某些值或从删除的strings
中删除columns
。
对于下面的df
,我想将'Big','Cat'
保留在Col B,C
中,但删除其他所有内容。
import pandas as pd
d = ({
'A' : ['A','Keep','A','Value'],
'B' : ['Big','X','Big','Y'],
'C' : ['Cat','X','Cat','Y'],
})
df = pd.DataFrame(data=d)
如果执行以下任一操作,则只会选择该行。
Big = df[df['B'] == 'Big']
Cat = df[df['C'] == 'Cat']
我的预期输出是:
A B C
0 A Big Cat
1 Keep
2 A Big Cat
3 Value
我需要类似x = df[df['B','C'] != 'Big','Cat']
答案 0 :(得分:2)
IIUC
更新
def min(self):
while self.left:
self.root = self.left
return self.root
def max(self):
while self.right:
self.root = self.right
return self.value
def valid(self):
min = min(self.left)
max = max(self.right)
if self.root > min and self.root < max:
return True
答案 1 :(得分:2)
似乎您只想保留一些值,并在后面加上空字符串
使用@Module
class FragmentModule(val fragment : Fragment) {
@Provides
fun provideContext(): Context = fragment.context!!
}
np.where
使用keeps = ['Big', 'Cat']
df['B'] = np.where(df.B.isin(keeps), df.B, '')
df['C'] = np.where(df.C.isin(keeps), df.C, '')
A B C
0 A Big Cat
1 Keep
2 A Big Cat
3 Value
df.where
答案 2 :(得分:1)
您可以通过NumPy和np.ndarray.all
过滤组合列:
mask = (df[['B', 'C']].values != ['Big', 'Cat']).all(1)
df.loc[mask, ['B', 'C']] = ''
print(df)
A B C
0 A Big Cat
1 Keep
2 A Big Cat
3 Value
答案 3 :(得分:1)
或者这个:
df[['B','C']]=df[['B','C']].apply(lambda row: row if row.tolist()==['Big','Cat'] else ['',''],axis=1)
print(df)
输出:
A B C
0 A Big Cat
1 Keep
2 A Big Cat
3 Value
答案 4 :(得分:0)
也许是一个简洁的版本:
df.loc[df['B'] != 'Big', 'B'] = ''
df.loc[df['C'] != 'Cat', 'C'] = ''
print(df)
输出:
A B C
0 A Big Cat
1 Keep
2 A Big Cat
3 Value