我大约有20个数据框,我在其中定位特定行的值。例如,我正在显示一个数据框的简化版本
Type N1 N2
43 121 455
23 554 52
85 74 615
我想从我的数据集中获取每个“ Type” 23的行
我已经尝试了下面给出的代码,但是输出有些垃圾。
dataf = pd.DataFrame()
for x in [df1,df2,...df20]:
data = x.loc[x['Type']==23]
dataf.append(data)
我希望有一个新的数据框,它具有与N1和N2相同的列,并具有选定行的值。
预期的新数据框:
N1 N2
554 52
153 87 and so on..
答案 0 :(得分:2)
我认为:
df_list = [df1,df2, ...,df20]
filtered_df_list = [ df[df['Type'] == 23] for df in df_list ] #Filter each mini-df on "Type" = 23
final_df = pd.concat(filtered_df_list) # Concat the small mini-dfs (hence faster concatenating)
根据数据帧的大小,可能会更高效,更省时,但这可以证明。如果您与我们分享一些数据以便我可以做,或者您想自己做,那么我对答案很感兴趣。
答案 1 :(得分:1)
在过滤之前使用pd.concat
合并数据帧:
ondragover(ev) {
const holder = document.getElementById('holder1');
holder.className = 'hover'
return false;
}
ondragend(ev) {
const holder = document.getElementById('holder1');
holder.className = ''
return false;
}
ondrop(e) {
const holder = document.getElementById('holder1');
holder.className = ''
e.preventDefault();
this.readfiles(e.dataTransfer.files);
this.imageUpload();
}
readfiles(files) {
this.files = files;
}
handleFileSelect(evt) {
this.files = evt.target.files;
this.imageUpload();
}
imageUpload() {
setTimeout(() => {
this.progress.percentage = 0;
this.sonuc = this.files;
for (let i = 0; i < this.sonuc.length; i++) {
this.deneme.push({file: this.sonuc[i] , percantage: 0 , output: null });
this.currentFileUpload = this.sonuc[i];
const reader = new FileReader();
reader.onload = (event: any) => {
this.deneme[this.deneme.length - this.sonuc.length + i].output = event.target.result;
};
reader.readAsDataURL(this.sonuc[i]);
this.userService.imageCreate(this.currentFileUpload).subscribe(event => {
if (event.type === HttpEventType.UploadProgress ) {
this.deneme[this.deneme.length - this.sonuc.length + i].percantage = Math.round(event.loaded / event.total * 100 );
} else if (event instanceof HttpResponse ) {
setTimeout(() => {
this.deneme[this.deneme.length - this.sonuc.length + i].progressDurumu = false;
console.log('Upload images!');
}, 500); }
});
}
}, 51);
}
稍微依赖于您的管道是什么样子,很有可能您在第一次读取数据帧时就已经可以合并它们。