python - 有没有更多的Pythonic方法来执行以下重复代码

标签 python python-2.7 pandas

我有 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/

相关文章:

python - 如何使用 flatten_json 递归地展平嵌套的 JSON

python - 在 Python 中创建 CLI(Shell?)

python - 传递给另一个模块时 lambda 函数的范围

python - 如何检查 .xls 和 .csv 文件是否为空

python - python 线性回归 - 梯度下降误差

python - 在 PyInstaller 应用程序中启用 Windows 长文件路径支持

python - Peewee 打印生成的查询

python - 基于标点符号列表替换数据框中的标点符号

python - 在Python中的数据框的所有列中搜索字符串

python - 如何从文本文件计算 python 2.7 中的平均单词和句子长度