Python 在特定条件下交换列和行中的值

Python 在特定条件下交换列和行中的值,python,pandas,dataframe,conditional-statements,Python,Pandas,Dataframe,Conditional Statements,我有以下数据帧: 我想检查'A start'列中的值是否为负值。如果为负值,则交换列'start'和'end'以及列'A start'和'A end'中 “开始”的值为负值。因此,结果应该是: 我试着用where解决它,但它不起作用 我正在使用python 3.8 非常感谢您的帮助。嘿,看看这篇文章,它与您的问题类似,可能会有所帮助!如果不让我知道,可以寻找其他的选择 嘿,看看这篇文章,它与你的问题类似,可能会有所帮助!如果不让我知道,可以寻找其他的选择 以下是使用的最简单方法,其中 df

我有以下数据帧:

我想检查
'A start'
列中的值是否为负值。如果为负值,则交换列
'start'
'end'
以及列
'A start'
'A end'

“开始”的值为负值。因此,结果应该是:

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

我正在使用python 3.8


非常感谢您的帮助。

嘿,看看这篇文章,它与您的问题类似,可能会有所帮助!如果不让我知道,可以寻找其他的选择


嘿,看看这篇文章,它与你的问题类似,可能会有所帮助!如果不让我知道,可以寻找其他的选择


以下是使用
的最简单方法,其中


df = pd.DataFrame()
df['start']   = [1,5,7,2]
df['end']     = [4,6,8,9,]
df['A start'] = [234, -475, -765, 113]
df['A end']   = [-654, 312, 987, -553]


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


df=pd.DataFrame()
df['start']=[1,5,7,2]
df['end']=[4,6,8,9,]
df['A start']=[234,-475,-765113]
df['A end']=[-654312987,-553]
df[['A start','A end']]=df[['A end','A start']]。其中(df['A start']<0,df['A start','A end']]。值)
df
输出:
以下是使用
的最简单方法,其中


df = pd.DataFrame()
df['start']   = [1,5,7,2]
df['end']     = [4,6,8,9,]
df['A start'] = [234, -475, -765, 113]
df['A end']   = [-654, 312, 987, -553]


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


df=pd.DataFrame()
df['start']=[1,5,7,2]
df['end']=[4,6,8,9,]
df['A start']=[234,-475,-765113]
df['A end']=[-654312987,-553]
df[['A start','A end']]=df[['A end','A start']]。其中(df['A start']<0,df['A start','A end']]。值)
df
输出:

不幸的是,您发送的链接没有帮助不幸的是,您发送的链接没有帮助谢谢,它可以工作!伟大的确保批准答案!谢谢你,这很有效!伟大的确保批准答案!