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

我是 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)


DIEA
浏览 107回答 1
1回答

宝慕林4294392

与正则表达式一起使用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.union用于添加B到列:df = df1[df1.columns[df1.columns.str.endswith('_old')].union(['B'])]print (df)       B  C_old  D_old0  james      0      01  weker      1      22   john      2      43   mark      3      64   jane      4      85    der      5     106    liv      6     127    vam      7     14
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python