Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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 Pandas apply():如何基于字符串匹配将选定列相乘并返回完整的数据帧_Python_Pandas_Apply - Fatal编程技术网

Python Pandas apply():如何基于字符串匹配将选定列相乘并返回完整的数据帧

Python Pandas apply():如何基于字符串匹配将选定列相乘并返回完整的数据帧,python,pandas,apply,Python,Pandas,Apply,我有名称、FDR%、年龄、FCR%、收入等列。我想选择字符串“%”匹配的列并乘以100。最后,我想返回包含“%column”值的整个数据帧。我尝试如下: df_final=df_1.filter(like='%', axis=1).apply(lambda x:x*100) df_final 这只返回子集,即在FDR%和FCR%上操作的列。我需要返回带有相应更改的整个数据帧 还有更好的方法实现同样的功能吗?您可以从过滤器返回的数据帧中选择列,并通过100选择多个列: df_1 = pd.Dat

我有名称、FDR%、年龄、FCR%、收入等列。我想选择字符串“%”匹配的列并乘以100。最后,我想返回包含“%column”值的整个数据帧。我尝试如下:

df_final=df_1.filter(like='%', axis=1).apply(lambda x:x*100)
df_final
这只返回子集,即在FDR%和FCR%上操作的列。我需要返回带有相应更改的整个数据帧


还有更好的方法实现同样的功能吗?

您可以从
过滤器返回的数据帧中选择列,并通过
100
选择多个列:

df_1 = pd.DataFrame({
        'A':list('abcdef'),
         'FDR%':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'FCR%':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
})

cols = df_1.filter(like='%').columns
df_1[cols] *= 100
print (df_1)
   A  FDR%  C  FCR%  E
0  a   400  7   100  5
1  b   500  8   300  3
2  c   400  9   500  6
3  d   500  4   700  9
4  e   500  2   100  2
5  f   400  3     0  4
或使用或遮罩,并选择具有以下内容的列:

注意


apply
这里的多选是错误的选择,因为引擎盖下的循环太慢了。快速解决方案仅是标量的倍数。

看起来您只需要删除轴=1
mask = df_1.columns.str.contains('%')
#alternative
#mask = df_1.columns.str.endswith('%')
df_1.loc[:, mask] *= 100