Pandas - 行掩码和二维数组赋值
Pandas - Row mask and 2d ndarray assignement
pandas 有一些问题,我想我没有正确使用它,我需要一些帮助才能正确使用它。
所以,我得到了一个数据框行的掩码,这个掩码是一个简单的布尔值列表。
我想将二维数组分配给新列或现有列。
mask = some_row_mask()
my2darray = some_operation(dataframe.loc[mask, column])
dataframe.loc[mask, new_or_exist_column] = my2darray
# Also tried this
dataframe.loc[mask, new_or_exist_column] = [f for f in my2darray]
示例数据:
dataframe = pd.DataFrame({'Fun': ['a', 'b', 'a'], 'Data': [10, 20, 30]})
mask = dataframe['Fun']=='a'
my2darray = [[0, 1, 2, 3, 4], [4, 3, 2, 1, 0]]
column = 'Data'
new_or_exist_column = 'NewData'
预期输出
Fun Data NewData
0 a 10 [0, 1, 2, 3, 4]
1 b 20 NaN
2 a 30 [4, 3, 2, 1, 0]
dataframe[mask] 和 my2darray 的行数完全相同,但总是以 :
结尾
ValueError:使用 ndarray 设置时,Mus 具有相等的 len 键和值。
感谢您的帮助!
编辑 - 在上下文中:
我只是增加了一些精度,它是为逐步填充折叠而制作的:我从数据帧的子部分计算并设置一些值。
根据 Parth 的说法,取而代之的是:
dataframe[new_or_exist_column]=pd.Series(my2darray, index=mask[mask==True].index)
我改成了这样:
dataframe.loc[mask, out] = pd.Series([f for f in features], index=mask[mask==True].index)
否则,所有已设置的值都将被 NaN 值覆盖。
我想提供一些有关它的信息。
谢谢!
试试这个:
dataframe[new_or_exist_column]=np.nan
dataframe[new_or_exist_column]=pd.Series(my2darray, index=mask[mask==True].index)
它将给出所需的输出:
Fun Data NewData
0 a 10 [0, 1, 2, 3, 4]
1 b 20 NaN
2 a 30 [4, 3, 2, 1, 0]
pandas 有一些问题,我想我没有正确使用它,我需要一些帮助才能正确使用它。
所以,我得到了一个数据框行的掩码,这个掩码是一个简单的布尔值列表。 我想将二维数组分配给新列或现有列。
mask = some_row_mask()
my2darray = some_operation(dataframe.loc[mask, column])
dataframe.loc[mask, new_or_exist_column] = my2darray
# Also tried this
dataframe.loc[mask, new_or_exist_column] = [f for f in my2darray]
示例数据:
dataframe = pd.DataFrame({'Fun': ['a', 'b', 'a'], 'Data': [10, 20, 30]})
mask = dataframe['Fun']=='a'
my2darray = [[0, 1, 2, 3, 4], [4, 3, 2, 1, 0]]
column = 'Data'
new_or_exist_column = 'NewData'
预期输出
Fun Data NewData
0 a 10 [0, 1, 2, 3, 4]
1 b 20 NaN
2 a 30 [4, 3, 2, 1, 0]
dataframe[mask] 和 my2darray 的行数完全相同,但总是以 :
结尾ValueError:使用 ndarray 设置时,Mus 具有相等的 len 键和值。
感谢您的帮助!
编辑 - 在上下文中:
我只是增加了一些精度,它是为逐步填充折叠而制作的:我从数据帧的子部分计算并设置一些值。 根据 Parth 的说法,取而代之的是:
dataframe[new_or_exist_column]=pd.Series(my2darray, index=mask[mask==True].index)
我改成了这样:
dataframe.loc[mask, out] = pd.Series([f for f in features], index=mask[mask==True].index)
否则,所有已设置的值都将被 NaN 值覆盖。 我想提供一些有关它的信息。
谢谢!
试试这个:
dataframe[new_or_exist_column]=np.nan
dataframe[new_or_exist_column]=pd.Series(my2darray, index=mask[mask==True].index)
它将给出所需的输出:
Fun Data NewData
0 a 10 [0, 1, 2, 3, 4]
1 b 20 NaN
2 a 30 [4, 3, 2, 1, 0]