python - 从数据帧中删除存储在变量中的系列

标签 python python-3.x pandas dataframe

这是一个简单的问题,但我无法使用 pd.drop()pd.difference() 找到解决方案。我需要返回一个新的数据帧,不包括选定的系列对象,其中系列对象在 for 循环期间存储在变量中。例如:val = df1[i],因此需要像df1.drop(val)

这样的解决方案

Df1:
1  2  3  4  5  6  7  8  9  10    
 C  C  C  C  C  C  T  T  T  T        
 G  N  D  A  G  N  D  A  G  N       
 K  M  I  L  R  K  M  I  L  R       
 C  C  L  C  C  C  T  T  T  T      
 G  N  D  A  E  N  D  A  G  N        
 Y  F  V  H  Q  E  P  W  Y  F        
 G  N  D  A  G  N  F  A  G  G        
 G  Y  D  A  G  N  D  A  G  N        

Val:
2
C
N
M
C
N
F
N
Y

New Df1:
1  3  4  5  6  7  8  9  10    
 C  C  C  C  C  T  T  T  T        
 G  D  A  G  N  D  A  G  N       
 K  I  L  R  K  M  I  L  R       
 C  L  C  C  C  T  T  T  T      
 G  D  A  E  N  D  A  G  N        
 Y  V  H  Q  E  P  W  Y  F        
 G  D  A  G  N  F  A  G  G        
 G  D  A  G  N  D  A  G  N

最佳答案

在问题中,您谈论的是系列的通用术语。但是,在示例中,您使用 df1 列作为排除的系列。每种情况的解决方案都不同。

如果您使用df1列作为排除的系列,则可以使用series.name使用drop。由于您将单个列分割为一个系列,因此它的名称就是列名称。

val = df1[2]
df_new = df1.drop(val.name, 1)

Out[222]:
  1  3  4  5  6  7  8  9  10
0  C  C  C  C  C  T  T  T  T
1  G  D  A  G  N  D  A  G  N
2  K  I  L  R  K  M  I  L  R
3  C  L  C  C  C  T  T  T  T
4  G  D  A  E  N  D  A  G  N
5  Y  V  H  Q  E  P  W  Y  F
6  G  D  A  G  N  F  A  G  G
7  G  D  A  G  N  D  A  G  N
<小时/>

如果您使用独立系列来排除 df1 列,则无法使用 series.name,因为 name 现在是不是列名称。您需要 eqall 来检查系列值以匹配列值并使用 loc

进行切片
val = pd.Series(['C', 'N', 'M', 'C', 'N', 'F', 'N', 'Y'])
df_new = df1.loc[:, ~df1.eq(val, axis=0).all()]

####Or

df_new = df1.drop(df1.eq(s, axis=0).all().idxmax(), 1)

Out[239]:
  1  3  4  5  6  7  8  9  10
0  C  C  C  C  C  T  T  T  T
1  G  D  A  G  N  D  A  G  N
2  K  I  L  R  K  M  I  L  R
3  C  L  C  C  C  T  T  T  T
4  G  D  A  E  N  D  A  G  N
5  Y  V  H  Q  E  P  W  Y  F
6  G  D  A  G  N  F  A  G  G
7  G  D  A  G  N  D  A  G  N

关于python - 从数据帧中删除存储在变量中的系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58830294/

相关文章:

python - 如何使用 sqlalchemy 截断和插入同一事务?

python - 为什么 RestrictedPython 在与 Python 3.6 一起使用时表现不同?

django - 我是 Django 的初学者,在 urls.py 中遇到语法错误

python - 从 pandas.dataframe 中删除低频值

python - 从 python 中删除除最大值之外的所有重复行

python - 维基链接(irc 机器人)

python-3.x - plotnine:UserWarning:在主线程之外启动 Matplotlib GUI 可能会失败

python - 我如何在换行后将输入存储在列表中

python - 使用 Pandas 按列值过滤

python - 从 groupby.size() 命令查找总计