J'ai plusieurs fichiers CSV avec des valeurs comme celle-ci dans un dossier:
Le GroupID.csv est le nom de fichier. Il existe plusieurs fichiers comme celui-ci, mais les plages de valeurs sont définies dans le même fichier XML. J'essaie de les regrouper Comment puis-je faire cela?
UPDATE1: Sur la base des commentaires de BobHaffner, je l'ai fait
import pandas as pd
import glob path =r'path/to/files'
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
df = pd.read_csv(file_,index_col=None, header=None)
df['file'] = os.path.basename('path/to/files/'+file_)
list_.append(df)
frame = pd.concat(list_)
print frame
pour obtenir quelque chose comme ça:
J'ai besoin de regrouper les valeurs en fonction des bacs du fichier XML. J'apprécierais vraiment toute aide.
Afin de regrouper votre série, vous devez utiliser la fonction pd.cut()
, comme ceci:
df['bin'] = pd.cut(df['1'], [0, 50, 100,200])
0 1 file bin
0 person1 24 age.csv (0, 50]
1 person2 17 age.csv (0, 50]
2 person3 98 age.csv (50, 100]
3 person4 6 age.csv (0, 50]
4 person2 166 Height.csv (100, 200]
5 person3 125 Height.csv (100, 200]
6 person5 172 Height.csv (100, 200]
Si vous souhaitez nommer les bacs vous-même, vous pouvez utiliser le labels=
argument, comme ceci:
df['bin'] = pd.cut(df['1'], [0, 50, 100,200], labels=['0-50', '50-100', '100-200'])
0 1 file bin
0 person1 24 age.csv 0-50
1 person2 17 age.csv 0-50
2 person3 98 age.csv 50-100
3 person4 6 age.csv 0-50
4 person2 166 Height.csv 100-200
5 person3 125 Height.csv 100-200
6 person5 172 Height.csv 100-200