Pandas数据框的子集,其中包含具有特定列值的行

时间:2018-11-26 21:17:01

标签: python string pandas dataframe

我的一行代码有问题。 这是我想要实现的:

  • reading_now是由3个字符组成的字符串
  • df2是作为df1子集的数据帧
  • 我希望df2由df1中的行组成,其中“代码”列中值的前三个字符等于“ reading_now”

我尝试使用以下两行没有成功:

*df2 = df1.loc[(df1['Code'])[0:3] == reading_now]*
*df2 = df1[(str(df1.Code)[0:3] == reading_now)]*

2 个答案:

答案 0 :(得分:0)

您可以使用

df2 = df1[df1['Code'].str[0:3] == reading_now]

例如:

data = ['abcd', 'cbdz', 'abcz', 'bdaz']

df1 = pd.DataFrame(data, columns=['Code'])
df2 = df1[df1['Code'].str[0:3] == 'abc']

df2将导致数据框的“代码”列包含“ abcd”和“ abcz”

答案 1 :(得分:0)

看起来您真的很接近第二次尝试。

您可以通过两种不同的方法解决此问题。

reading_now = 'AAA'
df1 = pd.DataFrame([{'Code': 'AAA'}, {'Code': 'BBB'}, {'Code': 'CCC'}])

解决方案

df2 = df1[df1['Code'].str.startswith(reading_now)]

df2 = df1[df1['Code'][0:3] == reading_now]

df2数据帧将包含以reading_now字符串开头的行。