如何在pandas中只对一列数据进行洗牌?
我有一个包含生产数据的Dataframe,我想加载到dev进行测试.但是,数据包含个人身份信息,因此我想要对这些列进行随机播放.
列:FirstName LastName Birthdate SSN OtherData
如果原始数据帧是由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])
但是,当我尝试时,我收到以下错误:
尝试在DataFrame的切片副本上设置值
解决方法:
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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。