熊猫行为的奇怪行为

时间:2019-02-08 04:24:33

标签: python pandas dataframe

我只是对这里发生的事情感到好奇。我有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

是每列的第一个索引。我不确定熊猫为什么会这样,就像我想象的那样,它只是将具有相似标题名称的列连接在一起,但是显然并非如此。

如果有时间可以解释这一点,那就太好了。

1 个答案:

答案 0 :(得分:0)

我相信您的问题是,您不是在串联之后而是在选择数据之前重置索引。

尝试:

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]