Python 如何在Numpy数组和Pandas数据帧之间进行映射?
我有一个像熊猫一样的数据框Python 如何在Numpy数组和Pandas数据帧之间进行映射?,python,pandas,numpy,Python,Pandas,Numpy,我有一个像熊猫一样的数据框 data = [[0, 10, 22000, 3], [1, 15, 42135, 4], [0, 14, 13526, 5], [0, 16, 32156, 3], [1, 23, 13889, 5], [0, 18, 18000, 6], [0, 21, 13189, 2], [1, 32, 58766, 2]] df = pd.Data
data = [[0, 10, 22000, 3],
[1, 15, 42135, 4],
[0, 14, 13526, 5],
[0, 16, 32156, 3],
[1, 23, 13889, 5],
[0, 18, 18000, 6],
[0, 21, 13189, 2],
[1, 32, 58766, 2]]
df = pd.DataFrame(data, columns = ['Gender', 'Age', 'Amount','Dependents'])
我有一个numpy数组
arr = numpy.array([[1, 15, 42135, 4],
[1, 23, 13889, 5],
[0, 21, 13189, 2]])
在这里,我想在数据框'data'(比如'Good_Bad')中创建一个新列,如果数组存在于数据中,则使用1
结果应该是这样的
data = [[0, 10, 22000, 3, 0],
[1, 15, 42135, 4, 1],
[0, 14, 13526, 5, 0],
[0, 16, 32156, 3, 0],
[1, 23, 13889, 5, 1],
[0, 18, 18000, 6, 0],
[0, 21, 13189, 2, 1],
[1, 32, 58766, 2, 0]]
记录2、5、7在新列中有1,其他记录有0。不确定如何映射数组和数据帧。方法#1
矢量化的-
在较新版本(>=v0.24)上,使用dfc.to\u numpy(copy=False)
代替dfc.values
方法2
这是一个具有视图
的视图,用于内存和性能效率-
# https://stackoverflow.com/a/45313353/ @Divakar
def view1D(a, b): # a, b are arrays
# This function gets 1D view into 2D input arrays
a = np.ascontiguousarray(a)
b = np.ascontiguousarray(b)
void_dt = np.dtype((np.void, a.dtype.itemsize * a.shape[-1]))
return a.view(void_dt).ravel(), b.view(void_dt).ravel()
D,A = view1D(dfc,arr)
df['Good_Bad'] = np.isin(D,A).astype(int)
如果数据有bool列,则all()不会applied@hanzgs如果df中有多余的列不包括在映射中,则只选择cols REQUD进行映射。因此,在代码中的所有位置将
df
替换为df[[‘性别’、‘年龄’、‘金额’、‘受抚养人’]
。这回答了你的问题吗?
# https://stackoverflow.com/a/45313353/ @Divakar
def view1D(a, b): # a, b are arrays
# This function gets 1D view into 2D input arrays
a = np.ascontiguousarray(a)
b = np.ascontiguousarray(b)
void_dt = np.dtype((np.void, a.dtype.itemsize * a.shape[-1]))
return a.view(void_dt).ravel(), b.view(void_dt).ravel()
D,A = view1D(dfc,arr)
df['Good_Bad'] = np.isin(D,A).astype(int)