微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 在pandas数据帧中随机播放一列

如何在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] 举报,一经查实,本站将立刻删除。

相关推荐