提问人:Lilcodemuffin 提问时间:11/1/2023 最后编辑:Lilcodemuffin 更新时间:11/1/2023 访问量:60
在迭代每个 CSV 时,如何将我的 CSV 与我的配置进行比较?
How do I compare my CSV to my config as I am iterating through each one?
问:
这是我的代码:
import boto3
import pandas as pd
import json
s3 = boto3.resource('s3')
my_bucket = s3.Bucket('bucket-name-here')
def verify_unique_col():
with open(r'unique_columns.json', 'r') as f:
config = json.load(f)
for my_bucket_object in my_bucket.objects.filter(Prefix='decrypted/'):
if my_bucket_object.key.endswith('.csv'):
filename = my_bucket_object.key.split('/')[-1]
for table in config['Unique_Column_Combination']['Table_Name']:
unique_col_comb = config['Unique_Column_Combination']['Table_Name'][f'{table}']
df = pd.read_csv(f's3://path/to/{filename}', sep='|')
df_unique = df.set_index(unique_col_comb.split(", ")).index.is_unique
print(df_unique)
verify_unique_col()
我正在尝试遍历存储桶中的每个 CSV 文件并读取每个文件,在读取一个文件后,我想确定该 CSV 中列的数据是否唯一。我在这里列出了在我的配置文件中应该是唯一的列:df = pd.read_csv(f's3://path/to/{filename}', sep='|')
{
"Unique_Column_Combination":
{
"Table_Name":{
"TABLE_1": "CLIENT, ADDRNUMBER, PERSNUMBER, CONSNUMBER, LAST_LOAD_DT",
"TABLE_2": "CLIENT, ADDRNUMBER, CONSNUMBER, LAST_LOAD_DT",
"TABLE_3": "CLIENT, ADDRNUMBER, DATE_FROM, NATION, LAST_LOAD_DT",
"TABLE_4": "COMM_TYPE, CONSNUMBER, COMM_USAGE, VALID_TO, LOAD_DT",
}
}
}
所以我希望我的代码读取 csv,然后检查该表上面的列是否唯一,然后继续检查上面的列是否唯一等等......我现在的代码方式是,它很好地遍历了我的配置中的每个 CSV,但它只读取我的 s3 存储桶中的第一个 CSV,并将第一个 CSV 与我的配置中列出的所有表进行比较。我想做一个从TABLE_1.csv到TABLE_1,从TABLE_2.csv到TABLE_2的比较,等等......这可能吗?从理论上讲,我认为是,但它似乎太混乱了......TABLE_1.csv
TABLE_1
TABLE_2.csv
TABLE_2
Table_Name
答: 暂无答案
评论
pd.drop_duplicates
TABLE_1.csv True TABLE_1.csv True
TABLE_1.csv True TABLE_2.csv True