从数据框中选择行,并包括另一列python

时间:2019-10-14 07:50:33

标签: 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')]]

我的EXPECTED输出应如下所示

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)

1 个答案:

答案 0 :(得分:5)

DataFrame.filter与正则表达式一起使用-$表示字符串的结尾,|表示or^B$表示按列B进行选择({ {1}}用于字符串的开头)

^

您可以按掩码选择-使用DataFrame.loc根据条件选择所有行(df = df1.filter(regex='_old$|^B$') )和列:

:

或使用Index.uniondf = df1.loc[:, df1.columns.str.endswith('_old') | (df1.columns == 'B')] 添加到列:

B