Arl*_*rie 7 python numpy pandas
如何只对熊猫中的一列数据进行随机排序?
我有一个包含生产数据的数据框,我想将其加载到开发人员进行测试。但是,数据包含可识别个人身份的信息,因此我想重新整理这些列。
列:名字姓氏生日SSN其他数据
如果原始数据帧是由read_csv创建的,并且我想将数据转换为第二个数据帧以进行sql加载,但是将名字,姓氏和SSN改组,我希望能够做到这一点:
if devprod == 'prod':
#do not shuffle data
df1['HS_FIRST_NAME'] = df[4]
df1['HS_LAST_NAME'] = df[6]
df1['HS_SSN'] = df[8]
else:
df1['HS_FIRST_NAME'] = np.random.shuffle(df[4])
df1['HS_LAST_NAME'] = np.random.shuffle(df[6])
df1['HS_SSN'] = np.random.shuffle(df[8])
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试该操作时,出现以下错误:
试图在DataFrame的切片副本上设置一个值
这似乎也可以完成这项工作:
df1['HS_FIRST_NAME'] = df[4].sample(frac=1).values
Run Code Online (Sandbox Code Playgroud)
立即错误是在处理数据框时使用不可取方法的症状。
np.random.shuffle就地工作并返回None,因此分配给的输出np.random.shuffle将不起作用。实际上,很少需要就地操作,并且通常不会产生实质性收益。
例如,在这里,您可以np.random.permutation通过pd.Series.values而不是通过序列使用和使用NumPy数组:
if devprod == 'prod':
#do not shuffle data
df1['HS_FIRST_NAME'] = df[4]
df1['HS_LAST_NAME'] = df[6]
df1['HS_SSN'] = df[8]
else:
df1['HS_FIRST_NAME'] = np.random.permutation(df[4].values)
df1['HS_LAST_NAME'] = np.random.permutation(df[6].values)
df1['HS_SSN'] = np.random.permutation(df[8].values)
Run Code Online (Sandbox Code Playgroud)