【发布时间】:2022-02-19 06:08:43
【问题描述】:
我正在为 Python 和数据分析基础课程做练习,但我在使用 pandas 的 drop_duplicates 函数时遇到了问题。 在我的工作目录中,我有一个具有这种结构的 csv 文件:
name,type,size(B)
bw,.png,94926
ciao,.txt,12
daffodil,.jpg,24657
eclipse,.png,64243
pippo,.odt,8299
song1,.mp3,1087849
song2,.mp3,764176
trump,.jpeg,10195
bw,.png,94926
daffodil,.jpg,24657
eclipse,.png,64243
trump,.jpeg,10195
bw,.png,94926
daffodil,.jpg,24657
eclipse,.png,64243
trump,.jpeg,10195
这是程序的一部分,我根据文件的扩展名将文件移动到他们的文件夹中,使用文件数据创建/更新摘要文件,最后尝试从 csv 中删除任何重复的行:
def move_files_and_update_recap(files, files_dir_path):
with open('recap.csv', 'a', newline='') as recap:
writer = csv.writer(recap)
if("recap.csv" not in work_dir_elements):
writer.writerow(['name', 'type', 'size(B)'])
for file in sorted(files):
# original file path
file_path = os.path.join(files_dir_path, file)
# file name
file_name = os.path.splitext(file)[0]
# file extension
file_extension = os.path.splitext(file)[1]
#file size
file_size = os.path.getsize(file_path)
#file type
file_type = ""
for key, value in file_types.items():
if(file.endswith(tuple(value))): # if the file has a recognizable extension findable in "file_types"
file_type = key
#if file already exists in the specific folder, print an error
if(file in os.listdir(os.path.join(files_dir_path, file_type))):
print("Operation failed: {} already exists in {} folder".format(file, file_type))
else:
# moving file to a specific directory based on its extension
shutil.move(os.path.join(files_dir_path, file), os.path.join(files_dir_path, file_type, file))
# print file info
print("{} type:{} size:{}".format(file_name, file_extension, file_size))
file_data = [file_name, file_extension, str(file_size)] # data info for csv file
writer.writerow(file_data)
df = pd.read_csv('recap.csv')
df.drop_duplicates(inplace=True)
我也尝试了不同的功能设置:
df.drop_duplicates(subset=None, keep=False, inplace=True)
或:
df.drop_duplicates(subset=None, keep="first", inplace=True)
如果我打印 df 结果是一个索引数据框:
name type size(B)
0 bw .png 94926
1 ciao .txt 12
2 daffodil .jpg 24657
3 eclipse .png 64243
4 pippo .odt 8299
5 song1 .mp3 1087849
6 song2 .mp3 764176
7 trump .jpeg 10195
8 bw .png 94926
9 daffodil .jpg 24657
10 eclipse .png 64243
11 trump .jpeg 10195
12 bw .png 94926
13 daffodil .jpg 24657
14 eclipse .png 64243
15 trump .jpeg 10195
如果我打印 drop_duplicates 结果,则返回值为 None。 关于如何修复它的一些建议?
【问题讨论】:
-
"如果我打印 drop_duplicates 结果,返回值为 None。关于如何修复它的一些建议?"您正在使用
inplace=True选项,这意味着该函数不会返回任何值,它会更新您原来的df变量
标签: python pandas dataframe csv duplicates