我的数据框是这样的
a = {'A': {0: 40.1, 1: 40.1, 2: 40.1, 3: 45.45, 4: 41.6, 5: 39.6},
'B': {0: 41.0, 1: 43.6, 2: 41.65, 3: 47.7, 4: 46.0, 5: 42.95},
'C': {0: 826.0, 1: 835.0, 2: 815.0, 3: 169.5, 4: 170.0, 5: 165.5},
'D': {0: 889.0, 1: 837.0, 2: 863.3, 3: 178.8, 4: 172.9, 5: 170.0}}
a = pd.DataFrame(a)
#a
A B C D
0 40.10 41.00 826.0 889.0
1 40.10 43.60 835.0 837.0
2 40.10 41.65 815.0 863.3
3 45.45 47.70 169.5 178.8
4 41.60 46.00 170.0 172.9
5 39.60 42.95 165.5 170.0
我想将 C 列和 D 列除以 5 但最多只能到第二个索引
在this的帮助下我想到了
a.apply(lambda x: x/5 if 'C' in x.name or 'D' in x.name else x)
如您所想,它适用于整个列。
仅将其应用到第二个索引并保持它们原位
的任何方式
最佳答案
默认索引使用loc
选择:
a.loc[:2, ['C','D']] /= 5
详细信息:
print (a.loc[:2, ['C','D']])
C D
0 826.0 889.0
1 835.0 837.0
2 815.0 863.3
所有索引值(例如 DatetimeIndex
)的通用解决方案使用 get_indexer
按列名和 iloc
排列的位置选择:
a.iloc[:3, a.columns.get_indexer(['C','D'])] /= 5
print (a)
A B C D
0 40.10 41.00 165.2 177.80
1 40.10 43.60 167.0 167.40
2 40.10 41.65 163.0 172.66
3 45.45 47.70 169.5 178.80
4 41.60 46.00 170.0 172.90
5 39.60 42.95 165.5 170.00
详细信息:
print (a.iloc[:3, a.columns.get_indexer(['C','D'])])
C D
0 826.0 889.0
1 835.0 837.0
2 815.0 863.3
关于python - 将 lambda 应用于数据框,但仅限于特定的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025786/