簡體   English   中英

python檢查數據框列是否包含具有特定長度的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM