为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

DIEA 2022-06-22 15:19:44
我是 python 的新手,如何从数据框中选择以_old 结尾并包含 B 列作为最终输出的列?这是我的数据框:import pandas as pdimport numpy as npdf1 = 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 pdimport numpy as npdf1 = 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 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

与正则表达式一起使用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_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


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信