python - 根据数组中数据的 if/then 添加列到 numpy 数组

标签 python numpy

我有一个多维 numpy 数组,如下所示:

np.array([("a",1,"x"),("b",2,"y"),("c",1,"z")])
例如,我需要根据第二列的 if then 创建数组的第四“列”。

如果 [:,2] == 1 则 newcolumn = 'Wow' else 'Dud'

这样它就会返回类似的内容:

[("a",1,"x","Wow"),("b",2,"y","Dud"),("c",1,"z","Wow")]

由于我将处理大约 1 亿行数据,因此速度至关重要。

预先感谢您的帮助。

最佳答案

尝试 Pandas

>> import pandas as pd
>> df = pd.DataFrame([("a",1,"x"),("b",2,"y"),("c",1,"z")], columns=['col1', 'col2', 'col3'])
df
  col1  col2 col3
0    a     1    x
1    b     2    y
2    c     1    z

创建一个对行进行操作的函数(不必是 la​​mbda),并在 axis=1(行)上使用 apply。这将为您提供新列。

>> b = lambda row: "Wow" if row['col2'] == 1 else "Dud" 
>> new_col = df.apply(b, axis=1)
new_col
0    Wow
1    Dud
2    Wow
dtype: object

将新列添加到数据框中。

>> df['new_col'] = new_col
df
  col1  col2 col3 new_col
0    a     1    x     Wow
1    b     2    y     Dud
2    c     1    z     Wow

并转换回元组列表

tuples = [tuple(x) for x in df[['col1','col2','col3','new_col']].to_numpy()]
[('a', 1, 'x', 'Wow'), ('b', 2, 'y', 'Dud'), ('c', 1, 'z', 'Wow')]

建议:不要使用元组列表。一定要使用数据框。更不用说大数据了。

关于python - 根据数组中数据的 if/then 添加列到 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952263/

相关文章:

python - numpy中二维的跨步卷积

python - 如何更改每一行中特定单元格左侧的所有值

Python 单元测试忽略 numpy

python - 在 Python : Given an original array of numbers, 中,我将如何创建一个包含特定范围内原始数组值的新数组?

python - 获取django模板中的模板名称

python - 只需输入一次 PEM 密码短语

android - 我可以在 .kv 文件中定义一个小部件并在 .py 文件中引用它吗?

python - MongoDB - 如何将 ObjectId 和日期时间显示为字符串(使用 bson.json_util)

python - 如何在 PySpark shell session 中更新 pyfile?

python - 根据 numpy 数组中的列值获取行号