Панды - заполнить список со значениями данных в виде строк - PullRequest
0 голосов
/ 28 августа 2018

Я читаю csv файлы из папки и фильтрую их в pandas фрейм данных, например:

results=[]
for filename in glob.glob(os.path.join('/path/*.csv')):
  with open(filename) as p:
    df = pd.read_csv(p)

    filtered = df[(df['duration'] > low1) & (df['duration'] < high1)]

    artist = filtered['artist'].values
    print artist
    track = filtered['track'].values
    print track

, где low1 = 0, high_1 = 0.5

artist и track печатают сотни отфильтрованных элементов как обычные строки, но если я попытаюсь добавить их к results в цикле:

artist = filtered['artist'].values
track = filtered['track'].values
results.append([track,artist]) 

Я вижу, что я добавляю объекты и типы, и results заканчивается заполнением частью отфильтрованных элементов. Я не понимаю, что происходит.

Как мне заполнить results всеми элементами как обычно strings, таким образом:

[['artist1', 'track1'], ['artist1', 'track2], ...]]

1 Ответ

0 голосов
/ 28 августа 2018

Создайте список из DataFrame s, а затем объедините их вместе concat, в последний раз преобразуйте во вложенные списки:

results=[]
for filename in glob.glob(os.path.join('/path/*.csv')):
    df = pd.read_csv(filename)
    #filter by conditions and also columns by names with .loc
    filtered = df.loc[(df['duration'] > low1) & (df['duration'] < high1), ['artist','track']]
    #alternative solution 
    filtered = df.loc[df['duration'].between(low1, high1,inclusive=False), ['artist','track']]
    results.append(filtered) 

out = pd.concat(results).values.tolist()

Другое решение ID добавляет списки и в последний раз выравнивает их по списку:

results=[]
for filename in glob.glob(os.path.join('/path/*.csv')):
    df = pd.read_csv(filename)
    #filter by conditions and also columns by names with .loc
    mask = df['duration'].between(low1, high1,inclusive=False)
    filtered = df.loc[mask, ['artist','track']].values.tolist()
    results.append(filtered) 

out = [y for x in results for y in x]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...