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