Странное поведение в пандах - PullRequest
0 голосов
/ 08 февраля 2019

Мне было просто любопытно, что здесь происходит.У меня есть 13 фреймов данных, которые выглядят примерно так:

df1:

time   val
00:00  1
00:01  2
00:02  5
00:03  8

df2:

time   val
00:04  5
00:05  12
00:06  4

df3:

time   val
00:07  8
00:08  24
00:09  3

искоро.Как вы можете видеть, каждый фрейм данных продолжается в то время, когда остановился другой, что в идеале означает, что я бы хотел, чтобы они были в одном фрейме для простоты. Обратите внимание, что примеры, которые я использовал, значительно меньше моих реальных .Тем не менее, при использовании следующего:

df = pd.concat([pd.read_csv(i, usecols=[0,1,2]) for i in sample_files])

Там, где эти 13 фреймов данных создаются посредством понимания этого списка, я получаю очень странный результат.Как будто я установил axis=1 внутри функции pd.concat().Если я пытаюсь сослаться на столбец, скажем, val

df['val']

Pandas возвращает что-то похожее на это:

0    1
1    2
     ...
2    5
3    8
Name: val, Length: 4, dtype: float64

В этом выводе он не указывает, что случилось с другим11 val столбцов.Если я тогда ссылаюсь на индекс, как показано ниже:

df['val'][0]

Возвращает:

0    1
0    5
0    8
Name: val, dtype: float64

, который является первым индексом каждого столбца.Я не уверен, почему pandas ведет себя так, как я себе представляю, он просто объединяет столбцы с одинаковыми именами заголовков, но, очевидно, это не так.

Если когда-нибудь удастся объяснить это, было бы здорово.

1 Ответ

0 голосов
/ 08 февраля 2019

Я полагаю, что ваша проблема в том, что вы сбрасываете индекс не после объединения, а перед выбором данных.

Попробуйте:

df = pd.concat([pd.read_csv(i, usecols=[0,1,2]) for i in sample_files])
df = df.reset_index(Drop=True)
df['val'][0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...