我正在尝试合并一个(熊猫14.1)数据帧和一个系列。序列应该形成一个新列,带有一些NAs(因为序列的索引值是数据帧索引值的子集)。
这适用于玩具示例,但不适用于我的数据(详见下文)。
例子:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6, 4), columns=['A', 'B', 'C', 'D'], index=pd.date_range('1/1/2011', periods=6, freq='D'))
df1
A B C D
2011-01-01 -0.487926 0.439190 0.194810 0.333896
2011-01-02 1.708024 0.237587 -0.958100 1.418285
2011-01-03 -1.228805 1.266068 -1.755050 -1.476395
2011-01-04 -0.554705 1.342504 0.245934 0.955521
2011-01-05 -0.351260 -0.798270 0.820535 -0.597322
2011-01-06 0.132924 0.501027 -1.139487 1.107873
s1 = pd.Series(np.random.randn(3), name='foo', index=pd.date_range('1/1/2011', periods=3, freq='2D'))
s1
2011-01-01 -1.660578
2011-01-03 -0.209688
2011-01-05 0.546146
Freq: 2D, Name: foo, dtype: float64
pd.concat([df1, s1],axis=1)
A B C D foo
2011-01-01 -0.487926 0.439190 0.194810 0.333896 -1.660578
2011-01-02 1.708024 0.237587 -0.958100 1.418285 NaN
2011-01-03 -1.228805 1.266068 -1.755050 -1.476395 -0.209688
2011-01-04 -0.554705 1.342504 0.245934 0.955521 NaN
2011-01-05 -0.351260 -0.798270 0.820535 -0.597322 0.546146
2011-01-06 0.132924 0.501027 -1.139487 1.107873 NaN
数据的情况(见下文)似乎基本相同——将一个系列与一个DatetimeIndex连接起来,该索引的值是数据帧的子集。但是它在标题中给出了ValueError(等等1 = (5, 286)等等2 = (5, 276) )。为什么它不工作?:
In[187]: df.head()
Out[188]:
high low loc_h loc_l
time
2014-01-01 17:00:00 1.376235 1.375945 1.376235 1.375945
2014-01-01 17:01:00 1.376005 1.375775 NaN NaN
2014-01-01 17:02:00 1.375795 1.375445 NaN 1.375445
2014-01-01 17:03:00 1.375625 1.375515 NaN NaN
2014-01-01 17:04:00 1.375585 1.375585 NaN NaN
In [186]: df.index
Out[186]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-01 17:00:00, ..., 2014-01-01 21:30:00]
Length: 271, Freq: None, Timezone: None
In [189]: hl.head()
Out[189]:
2014-01-01 17:00:00 1.376090
2014-01-01 17:02:00 1.375445
2014-01-01 17:05:00 1.376195
2014-01-01 17:10:00 1.375385
2014-01-01 17:12:00 1.376115
dtype: float64
In [187]:hl.index
Out[187]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-01 17:00:00, ..., 2014-01-01 21:30:00]
Length: 89, Freq: None, Timezone: None
In: pd.concat([df, hl], axis=1)
Out: [stack trace] ValueError: Shape of passed values is (5, 286), indices imply (5, 276)
Aus_lacy的帖子给了我尝试相关方法的想法,其中连接确实有效:
In [196]:
hl.name = 'hl'
Out[196]:
'hl'
In [199]:
df.join(hl).head(4)
Out[199]:
high low loc_h loc_l hl
2014-01-01 17:00:00 1.376235 1.375945 1.376235 1.375945 1.376090
2014-01-01 17:01:00 1.376005 1.375775 NaN NaN NaN
2014-01-01 17:02:00 1.375795 1.375445 NaN 1.375445 1.375445
2014-01-01 17:03:00 1.375625 1.375515 NaN NaN NaN
不过,了解一下为什么concat会在这个示例上工作,而不是这个数据会很好!
我的问题是不同的指数,下面的代码解决了我的问题。
df1.reset_index(drop=True, inplace=True)
df2.reset_index(drop=True, inplace=True)
df = pd.concat([df1, df2], axis=1)
我也遇到了类似的问题(join
工作正常,但concat
失败)。
检查df1
和s1
中的重复索引值(例如df1.index.is_unique
)
删除重复索引值(例如,df.drop_duplicates(inplace=True)
)或此处的一种方法https://stackoverflow.com/a/34297689/7163376 应该解决它。
我正试图通过SKMLPREGESSOR通过传递从CSV文件加载的自定义数据集。 我最初的错误是我的1D数组需要成为一个2D数组。 因此,我在x_测试和y_训练中都使用了来解决这个问题。然而,这现在给我带来了以下错误。 我已经浏览了其他一些帖子,但没有成功。
我正在登录各种网络设备,并尝试查看输出。下面是我正在运行的脚本,它工作得非常好。当我试图确定po1、allin1、sta1、saa1、stn1的产量时,我面临着这个问题。我已经给出了下面所有变量的输出。po1将是这里的源,如果任何索引在其他变量中不可用,则需要显示“NAn”。如果你对理解这个问题有异议,请告诉我。 下面是我得到的错误。当我把轴设为1时,我得到了这个错误。 po1的产量: allin
我有两个数据帧,有84行,显然是相同的长度,但是当我想将它们合并到1 df(按列合并-将名称、边和偏移量合并到纬度和经度的右侧)时,我得到了这个错误,。 发生了什么事? 这是我的代码行
据我所知,<code>override</code>关键字声明给定的声明实现了一个基本<code>virtual</code>方法,如果没有找到匹配的基本方法,编译应该失败。 我对< code>final关键字的理解是,它告诉编译器任何类都不能覆盖这个< code >虚拟函数。 那么是多余的吗?它似乎编译得很好。最终传达哪些信息而信息不传达?这种组合的用例是什么?
concat线给出 raise VALUERROR(f“传递值的形状为{传递},索引暗示{隐含}”)VALUERROR:传递值的形状为(18585,6),索引暗示(12390,6) 我不明白为什么上面写着18585。还有其他连接方法吗?请帮忙。 编辑:我想我找到了问题所在。 打印结果给了我以下信息 印刷原理图 结果Df最初是通过附加两个Df获得的 行号不是从0到12390的延续,而是从0到6194
我想创建一个