python - python检查数据框列是否包含具有特定长度的字符串
问题描述
我需要创建一个函数来检查数据框列中字符串的长度。
我有这个代码
df['XXX'] = df['XXX'].map(lambda x: x if isinstance(x, (datetime)) else None)
df_col_len = int(df['XXX']].str.encode(encoding='utf-8').str.len().max())
if df_col_len > 4:
print("In this step it will send a email")
问题是我有大约 20 列,每列应该有不同的长度。
我需要检查第 1 列是否最大长度 <4,第 3 列最大长度 <50,第 7 列最大长度 <47,等等。然后如果一列不满足条件,写下哪一列不满足.
您知道如何一次检查必要的列吗?
谢谢
解决方案
您可以.lt
在数据帧上使用(低于):
样本数据:
import pandas as pd
import numpy as np
d1 = {'A': {0: 'a', 1: 'ab', 2: 'abc'}, 'B': {0: 'abcd', 1: 'abcde', 2: 'abcdef'}, 'C': {0: 'abcdefg', 1: 'abcdefge', 2: 'abcdefgeh'}}
df = pd.DataFrame(d1)
代码:
max_len = {'A': 2, 'B': 5, 'C': 10}
# return length of element in your dataframe
df_check = df.applymap(len)
# create a new auxiallry dataframe with the values you want as a maximum
df_max = pd.DataFrame(np.repeat(pd.DataFrame(max_len, index=[1]).values, len(df), axis=0), columns=df.columns)
# check if the length of the actual value are *lower than* their max
df_check.lt(df_max)
输出:
Input, looks like:
A B C
0 a abcd abcdefg
1 ab abcde abcdefge
2 abc abcdef abcdefgeh
Output, looks like:
A B C
0 True True True
1 False False True
2 False False True
补充说明:
然后找到列名,您可以查看此问题。
推荐阅读
- c# - Outlook,在约会中存储变量的最佳方式
- react-native - 如何在本机反应中在堆栈导航器和抽屉导航器之间传递数据
- c# - 将值从 SQL 数据库存储到变量
- ios - 无法使用类型为“(范围
)' - wordpress - 当我使用 npx 命令时出现此错误错误:EPERM:不允许操作,
- image - 如何使用干预图像 laravel 将 webp 图像转换为 jpeg 或 png
- c# - 无法编辑 DotNetNuke 源文件
- javascript - 在 Android Chrome 上重新加载页面时出现黑色覆盖
- javascript - 如何读取 html 文件中的文本文件并使用 php 将内容复制到变量中
- android - 动态壁纸在不同位置缩放位图数百次