我有一个多维 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
创建一个对行进行操作的函数(不必是 lambda),并在 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/