首页 > 解决方案 > 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”。但它不会为每一行创建一个具有相应值的新列。错误是什么?

Results.csv 的示例: 在此处输入图像描述

标签: pythonpandasnumpy

解决方案


我想你想要的是这样的:

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       |

推荐阅读