web-dev-qa-db-ja.com

pandasの範囲に基づくビン値

フォルダーに次のような値を持つ複数のCSVファイルがあります。

GroupID.csvはファイル名です。このようなファイルは複数ありますが、値の範囲は同じXMLファイルで定義されています。私はそれらをグループ化しようとしています

更新1:ボブハフナーのコメントに基づいて、私はこれをやった

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

このようなものを取得するには:

XMLファイルのビンに基づいて値をグループ化する必要があります。私は本当に助けに感謝します。

16
pam

シリーズをバケット化するには、次のように pd.cut() function を使用する必要があります。

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]

自分でビンに名前を付けたい場合は、labels=引数、次のように:

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
38
firelynx