python - 从 Dataframe 中选择行并包含另一列 python

标签 python pandas numpy dataframe

我是 python 的新手,如何从数据框中选择以 _old 结尾的列并将 B 列 作为最终输出?这是我的数据框:

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'james weker john mark jane der liv vam'.split(),
                   'C_old': np.arange(8), 'D_old': np.arange(8) * 2})
print(df1)

我试过这个,它只选择以 _old 结尾的列,但我要在输出中包含 B 列

df1[df1.columns[pd.Series(df1.columns).str.endswith('_old')]]

我的预期输出应该是这样的

import pandas as pd
import numpy as np
df1 = pd.DataFrame({
                   'B': 'james weker john mark jane der liv vam'.split(),
                   'C_old': np.arange(8), 'D_old': np.arange(8) * 2})
print(df1)

最佳答案

使用DataFrame.filter使用正则表达式 - $ 用于字符串的结尾,| 用于 or^B$ 用于按列选择 B (^ 是字符串的开头)

df = df1.filter(regex='_old$|^B$')

您可以通过掩码进行选择 - 使用 DataFrame.loc按条件选择所有行 (:) 和列:

df = df1.loc[:, df1.columns.str.endswith('_old') | (df1.columns == 'B')]

或者使用Index.unionB 添加到列中:

df = df1[df1.columns[df1.columns.str.endswith('_old')].union(['B'])]
print (df)
       B  C_old  D_old
0  james      0      0
1  weker      1      2
2   john      2      4
3   mark      3      6
4   jane      4      8
5    der      5     10
6    liv      6     12
7    vam      7     14

关于python - 从 Dataframe 中选择行并包含另一列 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58372258/

相关文章:

python - 如何使用 f2py 结束 fortran 函数而不出错

python - 过滤查询集时 forms.py 中的 Django MultiValueKeyDictError

python - 笛卡尔积获取一组索引以指向 NumPy 数组中的唯一元素

python - 使用 django channel 从 python 3.6 升级到 python 3.7 时出现 SynchronousOnlyOperation 错误

python - Bokeh DataTable - 在选择回调上返回行和列

python - 计算 pandas 中每行具有某些值的列数

python - 如何显示存储在 Pandas 数据框中的图像?

python - 计算 numpy.array 对象列表中 numpy.array 对象的出现次数

python - Pandas 中的滚动差异

python - 将字符串转换为 NDB 属性的正确类型的正确方法?