Pandas:处理数据帧

2024-05-13 13:05:44 发布

您现在位置:Python中文网/ 问答频道 /正文

某个数据帧与以下数据帧有类似的中断:

import pandas as pd

df = pd.DataFrame({'name': ['John', 'Elvis', 'Gerrard', 'Pitty'],
              'age': [22,23,24,25],
              'document': [111,222,333,4444]})

如何使筛选器仅返回文档列中的值只有3位的行?你知道吗


Tags: 数据name文档importdataframepandasdfage
3条回答

log

df.query('2 <= log10(document) < 3')

      name  age  document
0     John   22       111
1    Elvis   23       222
2  Gerrard   24       333

扩展示例

df = pd.DataFrame({
    'name': ['John', 'Elvis', 'Gerrard', 'Pitty'],
    'age': [22, 23, 24, 25],
    'document': [11, 222, 999, 1000]
})

df

      name  age  document
0     John   22        11  # 2 digit number
1    Elvis   23       222  # 3 digit number
2  Gerrard   24       999  # 3 digit number | edge case
3    Pitty   25      1000  # 4 digit number | edge case

让我们只得到三位数

df.query('2 <= log10(document) < 3')

      name  age  document
1    Elvis   23       222
2  Gerrard   24       999

尝试//返回1000的除数,因为是3位数,所以除数应该是0

df[df.document//1000==0]
Out[474]: 
      name  age  document
0     John   22       111
1    Elvis   23       222
2  Gerrard   24       333

我们转换成str,然后计算len

df[df.document.astype(str).str.len().eq(3)]
Out[476]: 
      name  age  document
0     John   22       111
1    Elvis   23       222
2  Gerrard   24       333

更新

df[df.document.astype(str).str.split('.').str[0].str.len().eq(3)]
df[df.document.apply(lambda x: len(str(x)) == 3)]

相关问题 更多 >