python - 按条件更改和交换行和列中的值
问题描述
我有以下熊猫数据框:
我想检查列中的值是否'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?
不幸的是没有帮助。
解决方案
如果 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
是具有列值的字典。
推荐阅读
- android - Android Studio:预览页面上没有组件的属性
- python - tf.contrib.ffmpeg.decode_audio 替换?
- arrays - How to save a 2D array to a Script Property in Properties Service in Google App Script?
- javascript - 捕获表中的多个 td 元素
- c - C:无法使用取模运算符将零钱分解为面额,存储到数组中并将输出打印给用户
- excel - 在一个单元格中显示多个值(按公式)
- linux - 将 awk one-liner 集成到 awk 脚本中?
- java - 调用方法 - 记录为方法声明类
- java - 打印数组列表中元素的出现次数
- php - SQL查询打印JSON数据