Int64Index: 10730 entries, 0 to 10729 Data columns (total 6 columns): RegionID 10730 non-null int64 RegionName 10730 non-null object State 10730 non-null object Metro 10259 non-null object CountyName 10730 non-null object SizeRank 10730 non-null int64 dtypes: int64(2), object(4)
Int64Index: 10730 entries, 0 to 10729 Data columns (total 82 columns): 1996Q2 8218 non-null float64 1996Q3 8229 non-null float64 1996Q4 8235 non-null float64 ..... 2016Q1 10730 non-null float64 2016Q2 10730 non-null float64 2016Q3 10730 non-null float64 dtypes: float64(82)
请注意,索引的类型相同,它们甚至具有相同的行数。
我试图将数据集合并到一起,如下所示:
df4 = pd.merge(df3, df2, how='inner', left_index=True, right_index=True)
我得到的错误是:
ValueError: can only call with other PeriodIndex-ed objects
第2个dataframe中的2016Q1和类似命名的列是周期类型的,但我没有对它们进行合并--我认为只要索引排队,合并就应该有效?我做错了什么?
假设我们有以下DFS:
In [44]: df1
Out[44]:
1996Q2 2000Q3 2010Q4
0 1.5 3.5 1.000000
1 22.0 38.5 2.000000
2 15.0 35.0 4.333333
In [45]: df1.columns
Out[45]: PeriodIndex(['1996Q2', '2000Q3', '2010Q4'], dtype='period[Q-DEC]', freq='Q-DEC')
注意:DF1.columns
属于periodindex
dtype
In [46]: df2
Out[46]:
a b c
0 a1 b1 c1
1 a2 b2 c2
2 a3 b3 c3
In [47]: df2.columns
Out[47]: Index(['a', 'b', 'c'], dtype='object')
merge
和join
将返回:valueerror:只能与其他periodindex对象调用
,因为,AFAIK,Pandas DF不能有混合列dtypes,如果其中一些列是periodindex
dtype:
In [48]: df1.join(df2)
...
skipped
...
ValueError: can only call with other PeriodIndex-ed objects
In [54]: pd.merge(df1, df2, left_index=True, right_index=True)
...
skipped
...
ValueError: can only call with other PeriodIndex-ed objects
In [49]: df1.columns = df1.columns.values.astype(str)
In [50]: df1.columns
Out[50]: Index(['1996Q2', '2000Q3', '2010Q4'], dtype='object')
In [51]: df1.join(df2)
Out[51]:
1996Q2 2000Q3 2010Q4 a b c
0 1.5 3.5 1.000000 a1 b1 c1
1 22.0 38.5 2.000000 a2 b2 c2
2 15.0 35.0 4.333333 a3 b3 c3
In [52]: pd.merge(df1, df2, left_index=True, right_index=True)
Out[52]:
1996Q2 2000Q3 2010Q4 a b c
0 1.5 3.5 1.000000 a1 b1 c1
1 22.0 38.5 2.000000 a2 b2 c2
2 15.0 35.0 4.333333 a3 b3 c3
In [58]: df1.join(df2).columns
Out[58]: Index(['1996Q2', '2000Q3', '2010Q4', 'a', 'b', 'c'], dtype='object')
In [60]: df1.columns
Out[60]: PeriodIndex(['1996Q2', '2000Q3', '2010Q4'], dtype='period[Q-DEC]', freq='Q-DEC')
In [61]: cols_saved = df1.columns
In [62]: df1.columns = df1.columns.values.astype(str)
In [63]: df1.columns
Out[63]: Index(['1996Q2', '2000Q3', '2010Q4'], dtype='object')
# merging (joining) or doing smth else here ...
In [64]: df1.columns = cols_saved
In [65]: df1.columns
Out[65]: PeriodIndex(['1996Q2', '2000Q3', '2010Q4'], dtype='period[Q-DEC]', freq='Q-DEC')
Navicat 还能让你管理其他 SQLite 对象:索引和触发器。在主窗口的主工具栏点击相应的按钮来打开对象列表。
Navicat 还能让你管理其他 SQL Server 对象:索引、同义词、触发器、备份设备、链接服务器、服务器触发器、程序集、数据库触发器、分区函数和分区方案。在主窗口中,点击 “其他”,然后选择一个对象来打开对象列表。
Navicat 还能让你管理其他 PostgreSQL 对象:聚合、转换、域、索引、运算符、运算符类别、序列、触发器、表空间、编制和语言。在主窗口中,点击 “其他”,然后选择一个对象来打开对象列表。
Navicat 还能让你管理其他 Oracle 对象:数据库链接、索引、Java、实体化视图日志、序列、同义词、触发器、类型、XML 架构、目录、公用数据库链接、公用同义词和表空间。在主窗口中,点击 “其他”,然后选择一个对象来打开对象列表。
Navicat 还能让你管理其他 SQLite 对象:索引和触发器。在主窗口中,点击 “其他”,然后选择一个对象来打开对象列表。
Navicat 还能让你管理其他 SQL Server 对象:索引、同义词、触发器、备份设备、链接服务器、服务器触发器、程序集、数据库触发器、分区函数和分区方案。在主窗口中,点击 “其他”,然后选择一个对象来打开对象列表。