我有一个名为ol_axle的dataframe:

Single Tridem Tandem Tridem
700 1500 1200 2700

创建dataframe的代码如下:

weight=[700,1500,1200,2700]
name=['Single','Tridem','Tandem','Tridem']
ol_axle=pd.DataFrame([weight],columns=[name])

很抱歉,查询看起来并不那么困难,但我想要的是,如果列名中有‘tridem’,则列再重复两次,值除以3;如果列名中有‘tandem’,则再重复一次,值除以2,这样我就得到了结果数据帧:

Single Tridem Tridem Tridem Tandem Tandem Tridem Tridem Tridem
700 500 500 500 600 600 900 900 900

我为获得所需结果而开发的代码如下:

# Initialize a flag to track whether division has been performed
tridem_divided = False
tandem_divided = False

# Iterate over the columns and update values based on conditions
for column in ol_axle.columns:
    if 'Tridem' in column and not tridem_divided:
        ol_axle[column] = ol_axle[column] / 3
        tridem_divided = True
    elif 'Tandem' in column and not tandem_divided:
        ol_axle[column] = ol_axle[column] / 2
        tandem_divided = True
    else:
        ol_axle[column] = ol_axle[column]
        
ol_axle

问题是,我的代码工作得很好,我用它处理了许多数据,这些轴组的各种不同组合,但突然,出于某种原因,我仍然不知道我开始收到以下错误;

PerformanceWarning:索引超过词法排序深度可能会影响 性能.Ol_axle[列]=ol_axle[列]/3

我两天前刚刚安装了一个MatplotlibOSMNX库,我确信这与现在弹出的这个错误没有任何关系.

我已经try 了其他代码片段,但仍然收到此错误.

到目前为止,我还没有使用Python的经验,所以如果有人能帮助我获得我想要的dataframe的结果,那就太好了.

推荐答案

numpy.repeatmap相加:

n = {'Single': 1, 'Tandem': 2, 'Tridem': 3}
 
rep = ol_axle.columns.map(n)
    
out = (pd.DataFrame(np.repeat(ol_axle.div(rep, axis=1),
                              rep, axis=1),
                    columns=np.repeat(ol_axle.columns, rep),
                    index=ol_axle.index)
       )

print(out)

@Timless方法的变体,使用iloc:

n = {'Single': 1, 'Tandem': 2, 'Tridem': 3}

rep = ol_axle.columns.map(n)

out = (ol_axle.div(rep)
       .iloc[:, np.repeat(np.arange(ol_axle.shape[1]), rep)]
       )

输出:

   Single  Tridem  Tridem  Tridem  Tandem  Tandem  Tridem  Tridem  Tridem
0   700.0   500.0   500.0   500.0   600.0   600.0   900.0   900.0   900.0

Python相关问答推荐

两个pandas的平均值按元素的结果串接元素.为什么?

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

将9个3x3矩阵按特定顺序排列成9x9矩阵

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

我如何根据前一个连续数字改变一串数字?

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

Python逻辑操作作为Pandas中的条件

从旋转的DF查询非NaN值

Flask运行时无法在Python中打印到控制台

当单元测试失败时,是否有一个惯例会抛出许多类似的错误消息?

如何根据rame中的列值分别分组值

裁剪数字.nd数组引发-ValueError:无法将空图像写入JPEG

Pandas:将值从一列移动到适当的列

有了Gekko,可以创建子模型或将模型合并在一起吗?

用0填充没有覆盖范围的垃圾箱

FileNotFoundError:[WinError 2]系统找不到指定的文件:在os.listdir中查找扩展名

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

Pandas 数据框自定义排序功能

Python:打开名称中带有最新时间戳的特定文件

如何在pandas DataFrame列中保持一个只增加的数字序列?