我正在创建一个Python脚本,该脚本将在通过电子邮件发送列值之前自动将列值更改为NULL
。
我的目标是临时更改一些列的值,因为它的机密数据。下面是它看起来的样子:
svc_no last_name first_name acc_no some_column
12345 Parker Peter 1111111 some_value
11111 Stark Tony 2222222 some_value
22222 Rogers Steve 3333333 some_value
我有多个Excel文件,我将把这些Excel文件发送给某人。有人将对这些Excel文件进行一些处理,但在我通过电子邮件发送它之前,由于机密性,我需要将一些列值更改为NULL
。
我想要的输出将如下所示:
svc_no last_name first_name acc_no some_column
12345 NULL NULL NULL some_value
11111 NULL NULL NULL some_value
22222 NULL NULL NULL some_value
下面是我所做的:
path = os.path.absolute(__file__) new_path = path + 'source‘files = []如果不是os.path.exists( new_path):os.makedirs(new_path)表示文件中的文件:如果文件不在new_path中: shutil.copy( file,new_path)#第2行继续列表
这些代码将在与脚本相同的目录中创建一个文件夹,并复制新创建的目录new_path
中的所有Excel文件。
现在,我将每个
.loc
将列值更改为NULL
:df =pd.read_excel(文件)名称[df‘l_df.loc’..notnull(),'last_name'] = 'NULL'
我还尝试插入一个包含NULL
值的列,并使用iloc
将其复制到所需的列,尽管也没有发生任何情况。它也没有创建该列。
df.insert(loc=5, column='empty_column', value='NULL')
df.iloc[:,1] = df.iloc[:,5]
我的问题是它没有将last_name
列值更改为NULL
。有没有其他方法可以做到这一点?
我已经在我的一些项目中使用了.iloc
和.loc
,它们正在工作,但我在这里感到困惑,为什么它们什么都不做。
任何帮助都将受到高度的感谢。
发布于 2018-08-05 01:38:45
我真的看不出这里有什么问题。你似乎把事情搞得太复杂了。这还不够吗:
df
0 12345 Parker Peter 1111111 some_value
1 11111 Stark Tony 2222222 some_value
2 22222 Rogers Steve 3333333 some_value
创建机密版本:
confidential_columns = ['last_name', 'first_name', 'acc_no']
confidential_df = df.copy()
confidential_df[confidential_columns] = 'NULL'
你会得到这个:
confidential_df
0 12345 NULL NULL NULL some_value
1 11111 NULL NULL NULL some_value
2 22222 NULL NULL NULL some_value
然后根据一些决定决定在哪一项上注销:
confidential = True
def write()
writer = pd.ExcelWriter('output.xlsx')
if confidential:
confidential_df.to_excel(writer, sheet_name='report')
else:
df.to_excel(writer, sheet_name='report')
write()
当涉及到编写时,我不打算处理路径/文件/目录管理,因为这似乎超出了您的问题的范围。
https://stackoverflow.com/questions/51687559
复制相似问题