我必须清理 CSV 文件数据。我试图清理的数据如下。 条件:我必须在每个缺失的字符串末尾添加@myclinic.com.au。
douglas@myclinic.com.au
mildura
broadford@myclinic.com.au
officer@myclinic.com.au
nowa nowa@myclinic.com.au
langsborough@myclinic.com.au
brisbane@myclinic.com.au
robertson@myclinic.com.au
logan village
ipswich@myclinic.com.au
代码是
DataFrame = pandas.read_csv(ClinicCSVFile)
DataFrame['Email'] = DataFrame['Email'].apply(lambda x: x if '@' in str(x) else str(x)+'@myclinic.com.au')
DataFrameToCSV = DataFrame.to_csv('Temporary.csv', index = False)
print(DataFrameToCSV)
但是我得到的输出是无,我无法解决问题的后半部分,因为它生成了下面的错误
TypeError: 'NoneType' object is not iterable
源自上述数据框。 请帮我解决这个问题。
最佳答案
使用endswith
for 条件通过 ~
反转并在末尾添加字符串:
df.loc[~df['Email'].str.endswith('@myclinic.com.au'), 'Email'] += '@myclinic.com.au'
#if need check only @
#df.loc[~df['Email'].str.contains('@'), 'Email'] += '@myclinic.com.au'
print (df)
Email
0 douglas@myclinic.com.au
1 mildura@myclinic.com.au
2 broadford@myclinic.com.au
3 officer@myclinic.com.au
4 nowa nowa@myclinic.com.au
5 langsborough@myclinic.com.au
6 brisbane@myclinic.com.au
7 robertson@myclinic.com.au
8 logan village@myclinic.com.au
9 ipswich@myclinic.com.au
对我来说效果很好:
df = pd.DataFrame({'Email': ['douglas@myclinic.com.au', 'mildura', 'broadford@myclinic.com.au', 'officer@myclinic.com.au', 'nowa nowa@myclinic.com.au', 'langsborough@myclinic.com.au', 'brisbane@myclinic.com.au', 'robertson@myclinic.com.au', 'logan village', 'ipswich@myclinic.com.au']})
df.loc[~df['Email'].str.contains('@'), 'Email'] += '@myclinic.com.au'
print (df)
Email
0 douglas@myclinic.com.au
1 mildura@myclinic.com.au
2 broadford@myclinic.com.au
3 officer@myclinic.com.au
4 nowa nowa@myclinic.com.au
5 langsborough@myclinic.com.au
6 brisbane@myclinic.com.au
7 robertson@myclinic.com.au
8 logan village@myclinic.com.au
9 ipswich@myclinic.com.au
关于python - Pandas 数据框返回 None 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50324489/