python - Python:如何使用 for 循环将列添加到包含其他一些列的日志的数据框中?
问题描述
我有一个给定的数据框,其中三列包含随机数。我想要做的是使用 for 循环添加三个包含相应列的对数值的列。
我的数据框由以下给出:
K L Y
0 44.482983 22.612093 19.160614
1 44.131591 21.071627 44.804061
2 46.188112 21.420053 10.296304
3 38.231555 23.777519 19.128269
4 40.289477 32.450482 23.141743
... ... ... ...
99995 48.793839 33.907988 35.769701
99996 41.654043 34.899131 14.866854
99997 49.602684 20.047823 11.387398
99998 47.265013 30.397463 36.708146
99999 49.375947 39.978109 45.814494
100000 rows × 3 columns
100000 行 × 3 列
使用以下几行给了我想要的结果:
data['k'] = np.log(data['K'])
data['l'] = np.log(data['L'])
data['y'] = np.log(data['Y'])
生成的数据框如下所示:
K L Y k l y
0 44.482983 22.612093 19.160614 3.795107 3.118485 2.952857
1 44.131591 21.071627 44.804061 3.787176 3.047927 3.802299
2 46.188112 21.420053 10.296304 3.832722 3.064328 2.331785
3 38.231555 23.777519 19.128269 3.643661 3.168741 2.951167
4 40.289477 32.450482 23.141743 3.696090 3.479715 3.141638
... ... ... ... ... ... ...
99995 48.793839 33.907988 35.769701 3.887604 3.523651 3.577101
99996 41.654043 34.899131 14.866854 3.729398 3.552462 2.699134
99997 49.602684 20.047823 11.387398 3.904045 2.998121 2.432507
99998 47.265013 30.397463 36.708146 3.855770 3.414359 3.602999
99999 49.375947 39.978109 45.814494 3.899463 3.688332 3.824600
100000 rows × 6 columns
我尝试的是...
for i in ['k', 'l', 'y']:
for j in ['K', 'L', 'Y']:
data[i] = np.log(data[j])
...但这只会添加包含“K”日志的三列。
我在 for 循环中的错误在哪里?
解决方案
您可以像这样使用单线:
df[['k','l','y']] = np.log(df)
通过索引过滤:
df[['k','l','y']] = np.log(df.iloc[:,:3])
按名称选择:
df[['k','l','y']] = np.log(df[['K','L','Y']])
K L Y k l y
0 44.482983 22.612093 19.160614 3.795107 3.118485 2.952857
1 44.131591 21.071627 44.804061 3.787176 3.047927 3.802299
2 46.188112 21.420053 10.296304 3.832722 3.064328 2.331785
3 38.231555 23.777519 19.128269 3.643661 3.168741 2.951167
4 40.289477 32.450482 23.141743 3.696090 3.479715 3.141638
推荐阅读
- r - na.omits 删除任何列中具有 NA 的所有行,而不仅仅是指定列
- java - 将多个 HashMap 中的值合并到一个列表中
- javascript - 确定何时加载 DOM
- haskell - 在 Haskell 中向外螺旋到矩阵
- python - 为了用换行符提取花括号之间的文本,什么语法是正确的?
- javascript - 如何使用 Windows Server 上的节点绑定到特权端口 443
- sql - 当最右边的表为空时,Access 中的 LEFT OUTER JOIN(JET Red)返回零行 - 为什么?
- c# - 分组和求和数据表
- sonos - Sonos Music API 服务报告和清单文件
- observable - Observable - 仅订阅和处理每次调用可用的最新消息