我在一个文件夹中有多个bz.2文件。我必须提取它们,这给了我csv文件,并加载到数据库中。 这些文件没有标题。我必须在pandas中创建标题,并将这些列与自定义列一起映射。 我已经编写了以下代码来循环遍历bz.2文件,并在数据帧中提取csv文件
filenames are :
1.error_file_20210625_Events_00001.error.csv.bz2
2.error_file_20210625_Events_00002.error.csv.bz2
提取csv数据后,如下所示:
error_file_20210625_Events_00001.error.csv:
20210625,111|112|246, apple, 20210625_error,new,,,,,D000000,true
error_file_20210625_Events_00002.error.csv:
20210625,111|222|246, pear, 20210625_error,new,,,,,C000000,false
从这些bz2中提取csv的代码:
error_folder="c:\\"
Error_filenames = glob.glob(error_folder+"error_file_"+date+"_Events_*.error.csv.bz2")
if Error_filenames:
df_error_generator = (pd.read_csv(f, lines=True, compression={'method' : 'bz2'}) for f in Error_filenames)
df_error = pd.concat(df_error_generator, ignore_index=True)
filename="error_file_"+ date +"_Events_error.csv"
df_error.to_csv("c:\\chits\"+filename)
df_error_csv=pd.DataFrame(pd.read_csv("c:\\chits\"+filename))
headers=["filedate","errorcode","errorROEID","ROEID","type","rawrecord","filename"]
现在,我必须将数据映射到标题中:
filedate errorcode errorROEID ROEID type rawrecord filename
20210625 111|112|246 apple 20210625_error new 20210625,111|112|246, apple, 20210625_error,new,,,,,D000000,true error_file_20210625_Events_00001.error.csv
20210625 111|222|246 pear 20210625_error new 20210625,111|222|246, pear, 20210625_error,new,,,,,C000000,false error_file_20210625_Events_00002.error.csv
这里,
filedate is a date from the file
errorcode is second column
errorROEID is the third column
ROEID is the fourth column
type is fifth column
rawrecord is the whole row
filename is the filename
我不明白如何提取filename和filedate并在rawrecord列中插入整行。 有人能帮我吗
下面是一个可能的解决方案,只使用内置的Python库:
可以按如下方式构造数据帧:
给你:
相关问题 更多 >
编程相关推荐