我有 20 多个列,需要运行以下规则:
df['LAND1'] = df['LAND1'].str.replace('\W+', '')
df['LAND1'] = df['LAND1'].str.lower().astype(str)
df['SEA1'] = df['SEA1'].str.replace('\W+', '')
df['SEA1'] = df['SEA1'].str.lower().astype(str)
df['OCEAN1'] = df['OCEAN1'].str.replace('\W+', '')
df['OCEAN1'] = df['OCEAN1'].str.lower().astype(str)
df['CITY1'] = df['CITY1'].str.replace('\W+', '')
df['CITY1'] = df['CITY1'].str.lower().astype(str)
不同列有更多相同类型的代码,如何最小化我的代码。这样我就可以编写更少的代码。
最佳答案
您可以创建列名称列表,然后迭代它们并为其应用逻辑。示例-
columns = ['LAND1','SEA1','OCEAN1','CITY1',...]
for col in columns:
df[col] = (df[col].str.replace('\W+', '')
.str.lower().astype(str))
演示 -
In [17]: df
Out[17]:
LAND1 SEA1
0 Blah!!!Bloh Bleh@@@Blum
1 Blah!!!Bloh Bleh@@@Blum
2 Blah!!!Bloh Bleh@@@Blum
3 Blah!!!Bloh Bleh@@@Blum
4 Blah!!!Bloh Bleh@@@Blum
5 Blah!!!Bloh Bleh@@@Blum
6 Blah!!!Bloh Bleh@@@Blum
7 Blah!!!Bloh Bleh@@@Blum
8 Blah!!!Bloh Bleh@@@Blum
9 Blah!!!Bloh Bleh@@@Blum
In [18]: columns = ['LAND1','SEA1']
In [20]: for col in columns:
....: df[col] = (df[col].str.replace('\W+', '')
....: .str.lower().astype(str))
....:
In [21]: df
Out[21]:
LAND1 SEA1
0 blahbloh blehblum
1 blahbloh blehblum
2 blahbloh blehblum
3 blahbloh blehblum
4 blahbloh blehblum
5 blahbloh blehblum
6 blahbloh blehblum
7 blahbloh blehblum
8 blahbloh blehblum
9 blahbloh blehblum
关于python - 有没有更多的Pythonic方法来执行以下重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33384734/