[英]How to conditionally remove vowels from pandas dataframe columns?
我有一個簡單的 dataframe df:
{'Testingthislongcolumnthatwouldbreakoracle': {0: 3, 1: 3, 2: 3},
'goodcolum': {0: 1, 1: 1, 2: 1},
'goodcolum2': {0: 2, 1: 2, 2: 2}}
我正在嘗試確定列的長度是否> 30,如果是,請檢查刪除元音是否會使列的長度<= 30。如果是這樣,我想將元音從列名並將其保存回 dataframe。 這是我到目前為止所擁有的:
for columnName in df:
charlength=len(columnName)
vowels=sum(list(map(columnName.lower().count, "aeiou")))
if charlength >= 31:
if charlength - vowels <= 31:
df[columnName] = df.columns([columnName]).str.replace('[aAeEiIoOuU]', '')
print(columnName, charlength,vowels)
df
但這並沒有做出任何改變。 最終結果會將“Testingthislongcolumnthatwouldbreakoracle”列更改為“Tstngthslngclmnthtwldbrkrcl”
嘗試使用列的新名稱創建一個列表。
import pandas as pd
df = pd.DataFrame({'Testingthislongcolumnthatwouldbreakoracle': {0: 3, 1: 3, 2: 3},
'goodcolum': {0: 1, 1: 1, 2: 1},
'goodcolum2': {0: 2, 1: 2, 2: 2}})
col_names = []
for columnName in df:
charlength=len(columnName)
vowels=sum(list(map(columnName.lower().count, "aeiou")))
if charlength >= 31:
if charlength - vowels <= 31:
col_names.append(''.join(char for char in columnName if char not in 'aeiouAEIOU'))
else:
col_names.append(columnName)
print(df)
df.columns=col_names
print(df)
str.replace str.replace()
function 不能那樣工作。 您需要分別用空字符串替換每個元音:
>>> s = "Testingthislongcolumnthatwouldbreakoracle"
>>> for vowel in "aeiou":
... s = s.replace(vowel, "")
...
>>> s
'Tstngthslngclmnthtwldbrkrcl'
此外,請注意,您無需在匯總結果之前將map
列在list
中。 實際上會更有效率
s = columnName.lower()
vowel_count = sum(s.count(v) for v in "aeiou")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.