我有这样一个数据框:

id   Description     Price     Unit
1    Test Only       1254       12
2    Data test       Fresher    4
3    Sample          3569       1
4    Sample Onces    Code test 
5    Sample          245        2

我想从价格列移到左边的描述列,如果不是整数,则变为NaN.我没有要调用或匹配的特定单词,唯一的问题是如果Price列具有非整数值,则该字符串值将移动到描述列.

我已经试过Pandas replaceconcat了,但都没用.

所需输出如下:

id   Description     Price     Unit
1    Test Only       1254       12
2    Fresher                    4
3    Sample          3569       1
4    Code test     
5    Sample          245        2

推荐答案

这应该行得通

# data
df = pd.DataFrame({'id': [1, 2, 3, 4, 5],
                   'Description': ['Test Only', 'Data test', 'Sample', 'Sample Onces', 'Sample'],
                   'Price': ['1254', 'Fresher', '3569', 'Code test', '245'],
                   'Unit': [12, 4, 1, np.nan, 2]})
# convert price column to numeric and coerce errors
price = pd.to_numeric(df.Price, errors='coerce')
# for rows where price is not numeric, replace description with these values
df.Description = df.Description.mask(price.isna(), df.Price)
# assign numeric price to price column
df.Price = price
df

enter image description here

Python-3.x相关问答推荐

使用Polars阅读按日期键分区的最新S3镶木地板文件

如何从拼图分区数据集中读取数据到Polar

While循环不停止地等待,直到时间.睡眠结束

如何使用Python将嵌套的XML转换为CSV

tkinter treeview 如何在获取所选项目时将设置的对象作为对象返回

删除列表中的第二个出现

两个 y 轴在零处对齐的 plotly barplot

拆分列表的元素并将拆分后的元素包含到列表中

过滤阈值大小数据以使用 Pyspark 或 Python 读取

这种类型提示有什么作用?

用于 BIG 数组计算的多处理池映射比预期的要慢

通过最接近的匹配合并两个不同长度的列上的两个数据框

python中两个连续的yield语句如何工作?

Python - For 循环数百万行

Linux Mint 上的 Python3 错误没有名为蓝牙的模块

如何在元素列表中找到最大的数字,可能是非唯一的?

从大字典中弹出 N 项的最快方法

无论如何我可以在 Google colaboratory 中下载文件吗?

谁能给我一个 Python 3 中标准输入和标准输出的快速教程?

使用 python 3.0 的 Numpy