Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有其他类似python的方法来完成下面的重复代码_Python_Python 2.7_Pandas - Fatal编程技术网

有没有其他类似python的方法来完成下面的重复代码

有没有其他类似python的方法来完成下面的重复代码,python,python-2.7,pandas,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(

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

我希望df是一本
字典

for i in df.keys():
    df[i]=df[i].str.replace('\W+', '')
    df[i]=df[i].str.lower().astype(str)

让我知道它是否有助于您熔化数据帧,然后应用repalce和to lower功能。旋转数据帧以返回数据帧。应用数据帧和数据帧。应用映射也可以压缩代码:

df=pd.DataFrame({'A':['a','b','c'],'D':['d','e','f'],'G':['g','h','i']})
   A  D  G  
0  a  d  g
1  b  e  h
2  c  f  i
然后:

df.apply(pd.Series.replace,args=('d','ddd')).applymap(str.upper)

   A    D  G
0  A  DDD  G
1  B    E  H
2  C    F  I
您可以通过
selection=['A','D']影响并限制某些列;df[selection]=df[selection]。例如,应用(..)