首页 > 解决方案 > 按条件更改和交换行和列中的值

问题描述

我有以下熊猫数据框:

在此处输入图像描述

我想检查列中的值是否'A start'为负。如果是这样,则交换列'start''end'列中的值'A start'以及具有负值的行中的值'A end''A start'所以结果应该是:

在此处输入图像描述

我试图用 解决它where,但它不起作用。

df[['A start','A end']] = df[['A end','A start']].where(df['A start'] < 0 , df[['A start','A end']].values)

我正在使用 Python 3.8。

非常感谢您的帮助。

PS:论坛中的现有问题:

What is correct syntax to swap column values for selected rows in a pandas data frame using just one line?

不幸的是没有帮助。

标签: pythonpandasdataframeconditional-statements

解决方案


如果 A 起始值小于零,则此代码在起始列和结束列之间排列值:

for i, row in df.iterrows():
    if row['A start'] < 0:
        start_value = row['start']
        end_value = row['end']
        df.iloc[i, df.columns.get_loc('start')] = end_value
        df.iloc[i, df.columns.get_loc('end')] = start_value

i是索引并且row是具有列值的字典。


推荐阅读