[英]python check if dataframe column contains string with specific length
我需要創建一個函數來檢查數據框列中字符串的長度。
我有這個代碼
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 列,每列應該有不同的長度。
我需要檢查第一列的最大長度<4,第三列的最大長度<50,第七列的最大長度<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
補充筆記:
要找到列名,您可以查看此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.