1. 在10到100之间的整个Pandas 数据帧中,我们如何将所有数值除以10?

条件:

  1. 要忽略的时间或任何非数字列.
  2. 数字可以位于任何行或列中.
time n1 n2 n3 n4
11:50 1 2 3 40
12:50 5 6 70 8
13:50 80 7 6 500

如果需要,请使用此代码:


import pandas as pd
import numpy as np

time = ['11:50', '12:50', '13:50']
data_1 = {'time': time,
          'n1': [1, 5, 80],
          'n2': [2, 6 ,7],
          'n3': [3, 70 ,6],
          'n4': [40, 8, 500],
        }

df1 = pd.DataFrame(data = data_1)
df1

Try 1:它似乎不起作用

j = 0
k = 0
for i in df:
    if df[j][k] > 10 and df[j][k] < 100:
        df[j][k] = df[j][k] / 10
        j = j + 1
    else:
        pass;
    k = k + 1

Expected Result:

  1. 由于80、70、40是介于10和100之间的数字,因此在同一数据帧中,它们都被x/10所取代.
  • 80--&gt;80/10 = 8
  • 70--&gt;70/10 = 7
  • 40--&gt;40/10 = 4
  1. 整个时间列将被忽略,因为它是非数值.

推荐答案

在处理 Big Data 集时,使用DataFrame.applymap非常慢,它的扩展性不好.如果可能,您应该始终寻找矢量化解决方案.

在这种情况下,可以屏蔽10到DataFrame.mask之间的值,并使用DataFrame.mask执行条件替换(如果否定条件,则使用DataFrame.where).

# select the numeric columns
num_cols = df1.select_dtypes(include="number").columns

# In DataFrame.mask `df` is replaced by the calling DataFrame, 
# in this case df = df1[num_cols]
df1[num_cols] = (
    df1[num_cols].mask(lambda df: (df > 10) & (df < 100), 
                       lambda df: df // 10)
)

输出:

>>> df1

    time  n1  n2  n3   n4
0  11:50   1   2   3    4
1  12:50   5   6   7    8
2  13:50   8   7   6  500

设置:

time = ['11:50', '12:50', '13:50']
data_1 = {'time': time,
          'n1': [1, 5, 80],
          'n2': [2, 6 ,7],
          'n3': [3, 70 ,6],
          'n4': [40, 8, 500],
        }

df1 = pd.DataFrame(data = data_1)

Python相关问答推荐

从收件箱获取特定列中的重复行

在后台运行的Python函数

GEKKO:已知延迟的延迟系统的参数估计

如何将新的SQL服务器功能映射到SQL Alchemy的ORM

在使用Guouti包的Python中运行MPP模型时内存不足

剧作家Python:expect(locator).to_be_visible()vs locator.wait_for()

根据给定日期的状态过滤查询集

如何使用Python将工作表从一个Excel工作簿复制粘贴到另一个工作簿?

海运图:调整行和列标签

为什么这个带有List输入的简单numba函数这么慢

如何让程序打印新段落上的每一行?

用合并列替换现有列并重命名

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

如何在Python中并行化以下搜索?

运输问题分支定界法&

driver. find_element无法通过class_name找到元素'""

在Django admin中自动完成相关字段筛选

Python脚本使用蓝牙运行在Windows 11与raspberry pi4

如何在TensorFlow中分类多个类

Flash只从html表单中获取一个值