python - CSV:如何使用 numpy.where() 创建新列
问题描述
我有一个包含几列的 CSV 文件,我想编写一个代码来读取一个名为“ARPU 平均 6 个月 w/t 漫游和折扣”的特定列,然后创建一个名为“逻辑”的新列,该列将基于numpy.where()。这是我目前得到的:
csv_data = pd.read_csv("Results.csv")
data = csv_data[['ARPU average 6 month w/t roaming and discount']]
data = data.to_numpy()
sol = []
for target in data:
if1 = np.where(data < 0, 1, 0)
sol.append(if1)
csv_data["Logical"] = [sol].values
csv_data.to_csv ('Results2.csv', index = False, header=True)
因此,如果列中的值大于 0,则记录“1”,否则记录“0”。但它不会为每一行创建一个具有相应值的新列。错误是什么?
解决方案
我想你想要的是这样的:
df = pd.DataFrame([[-1], [1], [0]], columns=['ARPU average 6 month w/t roaming and discount'])
df['Logical'] = df['ARPU average 6 month w/t roaming and discount'] > 0
这将创建一个布尔列。如果您希望它是整数,使用 0/1 值,您可以使用astype
:
df['Logical'] = df['Logical'].astype('int')
输出:
| ARPU average 6 month w/t roaming and discount | Logical |
| --------------------------------------------- | ------- |
| -1 | 0 |
| 1 | 1 |
| 0 | 0 |
推荐阅读
- jquery - 升级后在jQuery中将复杂的live()变成on()
- sql-server - 带有 .SCRIPT 扩展名的文件 - 不在 SQL 中运行
- c# - Entity Framework Core:当存储过程结果中不存在列时忽略列映射
- c# - new SelectList(_roleManager.Roles.Where(s => s.Name == "User" && s => s.Name == "GroupAdmin") 的正确语法是什么
- javascript - 如何获取 URL 参数以动态更改我的 html 文本
- vba - VBA动态循环填充列
- r - 我正在尝试过滤数据以消除各种变量的异常值(理想情况下为 99% Conf. Interval),但会出现长度错误
- python-3.x - 使用 asyncio 和 matplotlib 同时将蓝牙流式数据传输到出口和计算/绘图
- javascript - 将多个对象数组合并为一个对象数组 JavaScript
- java - 为什么我的 Node 类不能与 java.util.LinkedList 一起使用