0.18.1版(2016年5月3日)#
这是从0.18.0开始的一个较小的错误修复版本,包括大量错误修复以及几个新功能、增强功能和性能改进。我们建议所有用户升级到此版本。
亮点包括:
.groupby(...)has been enhanced to provide convenient syntax when working with.rolling(..),.expanding(..)and.resample(..)per group, see herepd.to_datetime()has gained the ability to assemble dates from aDataFrame, see here方法链接的改进,请参见 here 。
自定义营业时间偏移,请参阅 here 。
在处理过程中修复了许多错误
sparse,请参见 here扩展了 Tutorials section 以现代Pandas为专题,由 @TomAugsburger 。 (GH13045 )。
V0.18.1中的新特性
新功能#
自定义营业时间#
The CustomBusinessHour is a mixture of BusinessHour and CustomBusinessDay which
allows you to specify arbitrary holidays. For details,
see Custom Business Hour (GH11514)
In [1]: from pandas.tseries.offsets import CustomBusinessHour
In [2]: from pandas.tseries.holiday import USFederalHolidayCalendar
In [3]: bhour_us = CustomBusinessHour(calendar=USFederalHolidayCalendar())
MLK日之前的星期五
In [4]: import datetime
In [5]: dt = datetime.datetime(2014, 1, 17, 15)
In [6]: dt + bhour_us
Out[6]: Timestamp('2014-01-17 16:00:00')
MLK日后的星期二(星期一因放假而跳过)
In [7]: dt + bhour_us * 2
Out[7]: Timestamp('2014-01-20 09:00:00')
方法 .groupby(..) 带有窗口和重采样操作的语法#
.groupby(...) 已得到增强,可以在使用时提供方便的语法 .rolling(..) , .expanding(..) 和 .resample(..) 每组,请参阅 (GH12486 , GH12738 )。
您现在可以使用 .rolling(..) 和 .expanding(..) 就像团购中的方法一样。这些函数返回另一个延迟对象(类似于 .rolling() 和 .expanding() 对未分组的Pandas对象执行操作)。然后,您可以对这些进行操作 RollingGroupby 对象,以类似的方式。
以前,您必须执行此操作才能获得每个组的滚动窗口平均值:
In [8]: df = pd.DataFrame({"A": [1] * 20 + [2] * 12 + [3] * 8, "B": np.arange(40)})
In [9]: df
Out[9]:
A B
0 1 0
1 1 1
2 1 2
3 1 3
4 1 4
.. .. ..
35 3 35
36 3 36
37 3 37
38 3 38
39 3 39
[40 rows x 2 columns]
In [10]: df.groupby("A").apply(lambda x: x.rolling(4).B.mean())
Out[10]:
A
1 0 NaN
1 NaN
2 NaN
3 1.5
4 2.5
...
3 35 33.5
36 34.5
37 35.5
38 36.5
39 37.5
Name: B, Length: 40, dtype: float64
现在,您可以执行以下操作:
In [11]: df.groupby("A").rolling(4).B.mean()
Out[11]:
A
1 0 NaN
1 NaN
2 NaN
3 1.5
4 2.5
...
3 35 33.5
36 34.5
37 35.5
38 36.5
39 37.5
Name: B, Length: 40, dtype: float64
为 .resample(..) 操作类型,以前您必须:
In [12]: df = pd.DataFrame(
....: {
....: "date": pd.date_range(start="2016-01-01", periods=4, freq="W"),
....: "group": [1, 1, 2, 2],
....: "val": [5, 6, 7, 8],
....: }
....: ).set_index("date")
....:
In [13]: df
Out[13]:
group val
date
2016-01-03 1 5
2016-01-10 1 6
2016-01-17 2 7
2016-01-24 2 8
[4 rows x 2 columns]
In [14]: df.groupby("group").apply(lambda x: x.resample("1D").ffill())
Out[14]:
group val
group date
1 2016-01-03 1 5
2016-01-04 1 5
2016-01-05 1 5
2016-01-06 1 5
2016-01-07 1 5
... ... ...
2 2016-01-20 2 7
2016-01-21 2 7
2016-01-22 2 7
2016-01-23 2 7
2016-01-24 2 8
[16 rows x 2 columns]
现在,您可以执行以下操作:
In [15]: df.groupby("group").resample("1D").ffill()
Out[15]:
group val
group date
1 2016-01-03 1 5
2016-01-04 1 5
2016-01-05 1 5
2016-01-06 1 5
2016-01-07 1 5
... ... ...
2 2016-01-20 2 7
2016-01-21 2 7
2016-01-22 2 7
2016-01-23 2 7
2016-01-24 2 8
[16 rows x 2 columns]
方法链接的改进#
以下方法/索引器现在接受 callable 。它的目的是使它们在方法链中更有用,请参见 documentation 。 (GH11485 , GH12533 )
.where()and.mask().loc[],iloc[]and.ix[][]标引
方法: .where() 和 .mask()#
它们可以接受条件的可调用函数,并且 other 争论。
In [16]: df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]})
In [17]: df.where(lambda x: x > 4, lambda x: x + 10)
Out[17]:
A B C
0 11 14 7
1 12 5 8
2 13 6 9
[3 rows x 3 columns]
方法: .loc[] , .iloc[] , .ix[]#
它们可以接受一个可调用的和一个可调用的元组作为切片器。Callable可以返回有效的布尔索引器或对这些索引器的输入有效的任何内容。
# callable returns bool indexer
In [18]: df.loc[lambda x: x.A >= 2, lambda x: x.sum() > 10]
Out[18]:
B C
1 5 8
2 6 9
[2 rows x 2 columns]
# callable returns list of labels
In [19]: df.loc[lambda x: [1, 2], lambda x: ["A", "B"]]
Out[19]:
A B
1 2 5
2 3 6
[2 rows x 2 columns]
索引使用 []#
最后,您可以在 [] 系列、数据帧和面板的索引。Callable必须返回有效的输入 [] 根据其类别和索引类型进行索引。
In [20]: df[lambda x: "A"]
Out[20]:
0 1
1 2
2 3
Name: A, Length: 3, dtype: int64
使用这些方法/索引器,可以在不使用临时变量的情况下链接数据选择操作。
In [21]: bb = pd.read_csv("data/baseball.csv", index_col="id")
In [22]: (bb.groupby(["year", "team"]).sum().loc[lambda df: df.r > 100])
Out[22]:
stint g ab r h X2b X3b hr rbi sb cs bb so ibb hbp sh sf gidp
year team
2007 CIN 6 379 745 101 203 35 2 36 125.0 10.0 1.0 105 127.0 14.0 1.0 1.0 15.0 18.0
DET 5 301 1062 162 283 54 4 37 144.0 24.0 7.0 97 176.0 3.0 10.0 4.0 8.0 28.0
HOU 4 311 926 109 218 47 6 14 77.0 10.0 4.0 60 212.0 3.0 9.0 16.0 6.0 17.0
LAN 11 413 1021 153 293 61 3 36 154.0 7.0 5.0 114 141.0 8.0 9.0 3.0 8.0 29.0
NYN 13 622 1854 240 509 101 3 61 243.0 22.0 4.0 174 310.0 24.0 23.0 18.0 15.0 48.0
SFN 5 482 1305 198 337 67 6 40 171.0 26.0 7.0 235 188.0 51.0 8.0 16.0 6.0 41.0
TEX 2 198 729 115 200 40 4 28 115.0 21.0 4.0 73 140.0 4.0 5.0 2.0 8.0 16.0
TOR 4 459 1408 187 378 96 2 58 223.0 4.0 2.0 190 265.0 16.0 12.0 4.0 16.0 38.0
[8 rows x 18 columns]
启用部分字符串索引 DatetimeIndex 当一个 MultiIndex#
Partial string indexing now matches on DateTimeIndex when part of a MultiIndex (GH10331)
In [23]: dft2 = pd.DataFrame(
....: np.random.randn(20, 1),
....: columns=["A"],
....: index=pd.MultiIndex.from_product(
....: [pd.date_range("20130101", periods=10, freq="12H"), ["a", "b"]]
....: ),
....: )
....:
In [24]: dft2
Out[24]:
A
2013-01-01 00:00:00 a 0.469112
b -0.282863
2013-01-01 12:00:00 a -1.509059
b -1.135632
2013-01-02 00:00:00 a 1.212112
... ...
2013-01-04 12:00:00 b 0.271860
2013-01-05 00:00:00 a -0.424972
b 0.567020
2013-01-05 12:00:00 a 0.276232
b -1.087401
[20 rows x 1 columns]
In [25]: dft2.loc["2013-01-05"]
Out[25]:
A
2013-01-05 00:00:00 a -0.424972
b 0.567020
2013-01-05 12:00:00 a 0.276232
b -1.087401
[4 rows x 1 columns]
在其他层面上
In [26]: idx = pd.IndexSlice
In [27]: dft2 = dft2.swaplevel(0, 1).sort_index()
In [28]: dft2
Out[28]:
A
a 2013-01-01 00:00:00 0.469112
2013-01-01 12:00:00 -1.509059
2013-01-02 00:00:00 1.212112
2013-01-02 12:00:00 0.119209
2013-01-03 00:00:00 -0.861849
... ...
b 2013-01-03 12:00:00 1.071804
2013-01-04 00:00:00 -0.706771
2013-01-04 12:00:00 0.271860
2013-01-05 00:00:00 0.567020
2013-01-05 12:00:00 -1.087401
[20 rows x 1 columns]
In [29]: dft2.loc[idx[:, "2013-01-05"], :]
Out[29]:
A
a 2013-01-05 00:00:00 -0.424972
2013-01-05 12:00:00 0.276232
b 2013-01-05 00:00:00 0.567020
2013-01-05 12:00:00 -1.087401
[4 rows x 1 columns]
汇编日期时间#
pd.to_datetime() 获取了从传入的 DataFrame 或者是一条判决。 (GH8158 )。
In [30]: df = pd.DataFrame(
....: {"year": [2015, 2016], "month": [2, 3], "day": [4, 5], "hour": [2, 3]}
....: )
....:
In [31]: df
Out[31]:
year month day hour
0 2015 2 4 2
1 2016 3 5 3
[2 rows x 4 columns]
使用传递的框架进行组装。
In [32]: pd.to_datetime(df)
Out[32]:
0 2015-02-04 02:00:00
1 2016-03-05 03:00:00
Length: 2, dtype: datetime64[ns]
您只能传递需要组装的柱。
In [33]: pd.to_datetime(df[["year", "month", "day"]])
Out[33]:
0 2015-02-04
1 2016-03-05
Length: 2, dtype: datetime64[ns]
其他增强功能#
pd.read_csv()现在支持delim_whitespace=True对于Python引擎 (GH12958 )pd.read_csv()now supports opening ZIP files that contains a single CSV, via extension inference or explicitcompression='zip'(GH12175)pd.read_csv()现在支持通过扩展推断或显式使用XZ压缩打开文件compression='xz'是指定的;xz还支持压缩DataFrame.to_csv以同样的方式 (GH11852 )pd.read_msgpack()即使在使用压缩时,现在也始终提供可写ndarray (GH12359 )。pd.read_msgpack()现在支持使用msgpack序列化和反序列化分类 (GH12573 ).to_json()现在支持NDFrames包含分类数据和稀疏数据 (GH10778 )interpolate()now supportsmethod='akima'(GH7588).pd.read_excel()现在接受路径对象(例如pathlib.Path,py.path.local)作为文件路径,与其他read_*功能 (GH12655 )已添加
.weekday_name属性作为组件添加到DatetimeIndex以及.dt访问者。 (GH11128 )Index.take现在的句柄allow_fill和fill_value始终如一 (GH12631 )In [34]: idx = pd.Index([1.0, 2.0, 3.0, 4.0], dtype="float") # default, allow_fill=True, fill_value=None In [35]: idx.take([2, -1]) Out[35]: Float64Index([3.0, 4.0], dtype='float64') In [36]: idx.take([2, -1], fill_value=True) Out[36]: Float64Index([3.0, nan], dtype='float64')
Indexnow supports.str.get_dummies()which returnsMultiIndex, see Creating Indicator Variables (GH10008, GH10103)In [37]: idx = pd.Index(["a|b", "a|c", "b|c"]) In [38]: idx.str.get_dummies("|") Out[38]: MultiIndex([(1, 1, 0), (1, 0, 1), (0, 1, 1)], names=['a', 'b', 'c'])
pd.crosstab()已经获得了normalize归一化频率表的参数 (GH12569 )。更新的文档中的示例 here 。.resample(..).interpolate()现在支持 (GH12925 ).isin()now accepts passedsets(GH12988)
稀疏变化#
这些更改符合稀疏处理,以返回正确的类型,并提供更流畅的索引体验。
SparseArray.take now returns a scalar for scalar input, SparseArray for others. Furthermore, it handles a negative indexer with the same rule as Index (GH10560, GH12796)
s = pd.SparseArray([np.nan, np.nan, 1, 2, 3, np.nan, 4, 5, np.nan, 6])
s.take(0)
s.take([1, 2, 3])
Bug in
SparseSeries[]indexing withEllipsisraisesKeyError(GH9467)窃听
SparseArray[]未正确处理使用元组进行索引 (GH12966 )Bug in
SparseSeries.loc[]with list-like input raisesTypeError(GH10560)Bug in
SparseSeries.iloc[]with scalar input may raiseIndexError(GH10560)Bug in
SparseSeries.loc[],.iloc[]withslicereturnsSparseArray, rather thanSparseSeries(GH10560)Bug in
SparseDataFrame.loc[],.iloc[]may results in denseSeries, rather thanSparseSeries(GH12787)窃听
SparseArray加法会忽略fill_value右手边 (GH12910 )Bug in
SparseArraymod raisesAttributeError(GH12910)窃听
SparseArray战俘计算1 ** np.nan作为np.nan必须是1 (GH12910 )Bug in
SparseArraycomparison output may incorrect result or raiseValueError(GH12971)Bug in
SparseSeries.__repr__raisesTypeErrorwhen it is longer thanmax_rows(GH10560)Bug in
SparseSeries.shapeignoresfill_value(GH10452)窃听
SparseSeries和SparseArray可能会有不同dtype从其密集的价值 (GH12908 )Bug in
SparseSeries.reindexincorrectly handlefill_value(GH12797)Bug in
SparseArray.to_frame()results inDataFrame, rather thanSparseDataFrame(GH9850)Bug in
SparseSeries.value_counts()does not countfill_value(GH6749)Bug in
SparseArray.to_dense()does not preservedtype(GH10648)Bug in
SparseArray.to_dense()incorrectly handlefill_value(GH12797)窃听
pd.concat()的SparseSeries结果导致密集 (GH10536 )Bug in
pd.concat()ofSparseDataFrameincorrectly handlefill_value(GH9765)Bug in
pd.concat()ofSparseDataFramemay raiseAttributeError(GH12174)Bug in
SparseArray.shift()may raiseNameErrororTypeError(GH12908)
API更改#
方法 .groupby(..).nth() 变化#
中的索引 .groupby(..).nth() 输出现在更加一致,当 as_index 参数被传递 (GH11039 ):
In [39]: df = pd.DataFrame({"A": ["a", "b", "a"], "B": [1, 2, 3]})
In [40]: df
Out[40]:
A B
0 a 1
1 b 2
2 a 3
[3 rows x 2 columns]
以前的行为:
In [3]: df.groupby('A', as_index=True)['B'].nth(0)
Out[3]:
0 1
1 2
Name: B, dtype: int64
In [4]: df.groupby('A', as_index=False)['B'].nth(0)
Out[4]:
0 1
1 2
Name: B, dtype: int64
新行为:
In [41]: df.groupby("A", as_index=True)["B"].nth(0)
Out[41]:
A
a 1
b 2
Name: B, Length: 2, dtype: int64
In [42]: df.groupby("A", as_index=False)["B"].nth(0)
Out[42]:
0 1
1 2
Name: B, Length: 2, dtype: int64
此外,此前,一个 .groupby 总是会排序,不管 sort=False 已获通过 .nth() 。
In [43]: np.random.seed(1234)
In [44]: df = pd.DataFrame(np.random.randn(100, 2), columns=["a", "b"])
In [45]: df["c"] = np.random.randint(0, 4, 100)
以前的行为:
In [4]: df.groupby('c', sort=True).nth(1)
Out[4]:
a b
c
0 -0.334077 0.002118
1 0.036142 -2.074978
2 -0.720589 0.887163
3 0.859588 -0.636524
In [5]: df.groupby('c', sort=False).nth(1)
Out[5]:
a b
c
0 -0.334077 0.002118
1 0.036142 -2.074978
2 -0.720589 0.887163
3 0.859588 -0.636524
新行为:
In [46]: df.groupby("c", sort=True).nth(1)
Out[46]:
a b
c
0 -0.334077 0.002118
1 0.036142 -2.074978
2 -0.720589 0.887163
3 0.859588 -0.636524
[4 rows x 2 columns]
In [47]: df.groupby("c", sort=False).nth(1)
Out[47]:
a b
c
2 -0.720589 0.887163
3 0.859588 -0.636524
0 -0.334077 0.002118
1 0.036142 -2.074978
[4 rows x 2 columns]
NumPy函数兼容性#
Pandas类阵列方法之间的兼容性(例如 sum 和 take )和他们的 numpy 通过增加签名,大大增加了对应的 pandas 方法,以便接受可以从 numpy ,即使它们不一定在 pandas 实施 (GH12644 , GH12638 , GH12687 )
.searchsorted()为Index和TimedeltaIndex现在接受一个sorter参数以保持与NumPy的兼容性searchsorted功能 (GH12238 )Bug in numpy compatibility of
np.round()on aSeries(GH12600)
此签名增强的示例如下所示:
sp = pd.SparseDataFrame([1, 2, 3])
sp
既往行为:
In [2]: np.cumsum(sp, axis=0)
...
TypeError: cumsum() takes at most 2 arguments (4 given)
新行为:
np.cumsum(sp, axis=0)
使用 .apply 关于按重采样分组#
使用 apply 关于GROUP BY操作的重采样(使用 pd.TimeGrouper )现在具有与相似的相同输出类型 apply 对其他分组操作的调用。 (GH11742 )。
In [48]: df = pd.DataFrame(
....: {"date": pd.to_datetime(["10/10/2000", "11/10/2000"]), "value": [10, 13]}
....: )
....:
In [49]: df
Out[49]:
date value
0 2000-10-10 10
1 2000-11-10 13
[2 rows x 2 columns]
以前的行为:
In [1]: df.groupby(pd.TimeGrouper(key='date',
...: freq='M')).apply(lambda x: x.value.sum())
Out[1]:
...
TypeError: cannot concatenate a non-NDFrame object
# Output is a Series
In [2]: df.groupby(pd.TimeGrouper(key='date',
...: freq='M')).apply(lambda x: x[['value']].sum())
Out[2]:
date
2000-10-31 value 10
2000-11-30 value 13
dtype: int64
新行为:
# Output is a Series
In [55]: df.groupby(pd.TimeGrouper(key='date',
...: freq='M')).apply(lambda x: x.value.sum())
Out[55]:
date
2000-10-31 10
2000-11-30 13
Freq: M, dtype: int64
# Output is a DataFrame
In [56]: df.groupby(pd.TimeGrouper(key='date',
...: freq='M')).apply(lambda x: x[['value']].sum())
Out[56]:
value
date
2000-10-31 10
2000-11-30 13
中的更改 read_csv 例外#
为了使之标准化, read_csv 这两个应用程序的 c 和 python 引擎,现在都将提高 EmptyDataError ,是的子类 ValueError ,以响应空列或表头 (GH12493 , GH12506 )
既往行为:
In [1]: import io
In [2]: df = pd.read_csv(io.StringIO(''), engine='c')
...
ValueError: No columns to parse from file
In [3]: df = pd.read_csv(io.StringIO(''), engine='python')
...
StopIteration
新行为:
In [1]: df = pd.read_csv(io.StringIO(''), engine='c')
...
pandas.io.common.EmptyDataError: No columns to parse from file
In [2]: df = pd.read_csv(io.StringIO(''), engine='python')
...
pandas.io.common.EmptyDataError: No columns to parse from file
除了这一错误更改外,还进行了其他几项更改:
CParserErrornow sub-classesValueErrorinstead of just aException(GH12551)A
CParserError现在已引发,而不是泛型Exception在……里面read_csv当c引擎无法分析列 (GH12506 )A
ValueError现在已引发,而不是泛型Exception在……里面read_csv当c引擎遇到一个NaN整型列中的值 (GH12506 )A
ValueError现在已引发,而不是泛型Exception在……里面read_csv什么时候true_values是指定的,并且c引擎遇到包含不可编码字节的列中的元素 (GH12506 )pandas.parser.OverflowError异常已被移除,并已替换为Python的内置OverflowError例外情况 (GH12506 )pd.read_csv()不再允许将字符串和整数组合用于usecols参数 (GH12678 )
方法 to_datetime 错误更改#
虫子进来了 pd.to_datetime() 当传递一个 unit 具有可兑换条目和 errors='coerce' 或不可兑换的 errors='ignore' 。此外,一个 OutOfBoundsDateime 当遇到该单位超出范围的值时,将引发异常 errors='raise' 。 (GH11758 , GH13052 , GH13059 )
既往行为:
In [27]: pd.to_datetime(1420043460, unit='s', errors='coerce')
Out[27]: NaT
In [28]: pd.to_datetime(11111111, unit='D', errors='ignore')
OverflowError: Python int too large to convert to C long
In [29]: pd.to_datetime(11111111, unit='D', errors='raise')
OverflowError: Python int too large to convert to C long
新行为:
In [2]: pd.to_datetime(1420043460, unit='s', errors='coerce')
Out[2]: Timestamp('2014-12-31 16:31:00')
In [3]: pd.to_datetime(11111111, unit='D', errors='ignore')
Out[3]: 11111111
In [4]: pd.to_datetime(11111111, unit='D', errors='raise')
OutOfBoundsDatetime: cannot convert input with unit 'D'
其他API更改#
.swaplevel()为Series,DataFrame,Panel,以及MultiIndex现在为其前两个参数提供了默认设置i和j这就调换了该指数最内部的两个水平。 (GH12934 ).searchsorted()为Index和TimedeltaIndex现在接受一个sorter参数以保持与NumPy的兼容性searchsorted功能 (GH12238 )PeriodandPeriodIndexnow raisesIncompatibleFrequencyerror which inheritsValueErrorrather than rawValueError(GH12615)Series.apply对于类别dtype,现在将传递的函数应用于每个.categories(而不是.codes),并返回一个category如果可能,请输入dtype (GH12473 )read_csv现在将引发一个TypeError如果parse_dates既不是布尔值、列表也不是字典(与文档字符串匹配) (GH5636 )的默认设置
.query()/.eval()现在是engine=None,它将使用numexpr如果已安装,则它将回退到python引擎。这模仿了0.18.1之前的行为,如果numexpr已安装(并且以前,如果未安装NumExpr,.query()/.eval()将提高)。 (GH12749 )pd.show_versions()现在包括pandas_datareader版本 (GH12740 )提供适当的
__name__和__qualname__泛型函数的属性 (GH12021 )pd.concat(ignore_index=True)现在使用RangeIndex作为默认设置 (GH12695 )pd.merge()和DataFrame.join()将显示一个UserWarning合并/加入具有多层数据帧的单数据帧时 (GH9455 , GH12219 )与之比较
scipy>0.17表示不推荐使用piecewise_polynomial插值法;支持替换from_derivatives方法 (GH12887 )
不推荐使用#
性能改进#
Performance improvements in
.groupby(..).cumcount()(GH11039)Improved memory usage in
pd.read_csv()when usingskiprows=an_integer(GH13005)改进的性能
DataFrame.to_sql检查表的区分大小写时。现在仅在表名不是小写时检查是否已正确创建表。 (GH12876 )改进的性能
.str.encode()和.str.decode()方法: (GH13008 )改进的性能
to_numeric如果输入是数字数据类型 (GH12777 )Improved performance of sparse arithmetic with
IntIndex(GH13036)
错误修复#
usecols中的参数pd.read_csv现在,即使CSV文件的行数不均匀,也会受到尊重 (GH12203 )窃听
groupby.transform(..)什么时候axis=1使用非单调有序索引指定 (GH12713 )窃听
Period和PeriodIndex创造提升KeyError如果freq="Minute"是指定的。请注意,在v0.17.0中不推荐使用分钟频率,建议使用freq="T"取而代之的是 (GH11854 )Bug in
.resample(...).count()with aPeriodIndexalways raising aTypeError(GH12774)窃听
.resample(...)使用一个PeriodIndex强制转换为DatetimeIndex当为空时 (GH12868 )窃听
.resample(...)使用一个PeriodIndex重采样到现有频率时 (GH12770 )Bug in printing data which contains
Periodwith differentfreqraisesValueError(GH12615)窃听
Series使用以下工具进行施工Categorical和dtype='category'是指定的 (GH12574 )Bugs in concatenation with a coercible dtype was too aggressive, resulting in different dtypes in output formatting when an object was longer than
display.max_rows(GH12411, GH12045, GH11594, GH10571, GH12211)窃听
float_format选项未被验证为可调用的选项的选项。 (GH12706 )窃听
GroupBy.filter什么时候dropna=False而且没有一个组符合标准 (GH12768 )窃听
__name__的.cum*功能 (GH12021 )Bug in
.astype()of aFloat64Inde/Int64Indexto anInt64Index(GH12881)中的基于整数的索引的往返错误
.to_json()/.read_json()什么时候orient='index'(默认设置) (GH12866 )绘图中的错误
Categorical尝试堆叠条形图时,数据类型会导致错误 (GH13019 )与>=进行比较
numpy1.11用于NaT比较 (GH12969 )窃听
.drop()具有非唯一的MultiIndex。 (GH12701 )窃听
.concatDateTime Tz感知和朴素的DataFrames (GH12467 )在正确地引发
ValueError在……里面.resample(..).fillna(..)在传递非字符串时 (GH12952 )Bug fixes in various encoding and header processing issues in
pd.read_sas()(GH12659, GH12654, GH12647, GH12809)Bug in
pd.crosstab()where would silently ignoreaggfuncifvalues=None(GH12569).Potential segfault in
DataFrame.to_jsonwhen serialisingdatetime.time(GH11473).中的潜在分段故障
DataFrame.to_json尝试序列化0d数组时 (GH11299 )。段故障输入
to_json在尝试序列化DataFrame或Series使用非ndarray值;现在支持序列化category,sparse,以及datetime64[ns, tz]数据类型 (GH10778 )。窃听
DataFrame.to_json不支持的数据类型未传递给默认处理程序 (GH12554 )。窃听
.align不返回子类 (GH12983 )Bug in aligning a
Serieswith aDataFrame(GH13037)窃听
ABCPanel其中Panel4D未被视为此泛型类型的有效实例 (GH12810 )一致性中的错误
.name在……上面.groupby(..).apply(..)案例 (GH12363 )窃听
Timestamp.__repr__这导致了pprint在嵌套结构中失败 (GH12622 )窃听
Timedelta.min和Timedelta.max属性现在报告真实的最小值/最大值timedeltas这是Pandas们所认可的。请参阅 documentation 。 (GH12727 )窃听
.quantile()使用插值法可能会强制float出乎意料的是 (GH12772 )Bug in
.quantile()with emptySeriesmay return scalar rather than emptySeries(GH12772)Bug in
.locwith out-of-bounds in a large indexer would raiseIndexErrorrather thanKeyError(GH12527)使用时重采样中的错误
TimedeltaIndex和.asfreq(),以前不会包括最后的栅栏柱 (GH12926 )Bug in equality testing with a
Categoricalin aDataFrame(GH12564)窃听
GroupBy.first(),.last()在以下情况下返回不正确的行TimeGroupervt.使用 (GH7453 )窃听
pd.read_csv()使用c引擎时指定skiprows在引用的项目中使用换行符 (GH10911 , GH12775 )窃听
DataFrame分配支持TZ的日期时间时丢失时区Series使用对齐 (GH12981 )窃听
.value_counts()什么时候normalize=True和dropna=True其中空值仍然对归一化计数起作用 (GH12558 )Bug in
Series.value_counts()loses name if its dtype iscategory(GH12835)窃听
Series.value_counts()丢失时区信息 (GH12835 )Bug in
Series.value_counts(normalize=True)withCategoricalraisesUnboundLocalError(GH12835)Bug in
Panel.fillna()ignoringinplace=True(GH12633)窃听
pd.read_csv()当指定names,usecols,以及parse_dates同时与c发动机 (GH9755 )窃听
pd.read_csv()当指定delim_whitespace=True和lineterminator同时与c发动机 (GH12912 )窃听
Series.rename,DataFrame.rename和DataFrame.rename_axis不治疗Series作为重新标记的映射 (GH12623 )。清理完毕
.rolling.min和.rolling.max增强数据类型处理 (GH12373 )窃听
groupby其中复杂类型被强制为浮点 (GH12902 )Bug in
Series.mapraisesTypeErrorif its dtype iscategoryor tz-awaredatetime(GH12473)用于一些测试比较的32位平台上的错误 (GH12972 )
从以下位置回落时的索引强制错误
RangeIndex施工 (GH12893 )当传递无效参数(例如浮动窗口)时,窗口函数中的错误消息会更好 (GH12669 )
Bug in slicing subclassed
DataFramedefined to return subclassedSeriesmay return normalSeries(GH11559)Bug in
.straccessor methods may raiseValueErrorif input hasnameand the result isDataFrameorMultiIndex(GH12617)窃听
DataFrame.last_valid_index()和DataFrame.first_valid_index()在空框架上 (GH12800 )Bug in
CategoricalIndex.get_locreturns different result from regularIndex(GH12531)窃听
PeriodIndex.resample未传播名称的位置 (GH12769 )窃听
date_rangeclosed关键字和时区 (GH12684 )。窃听
pd.concat加薪AttributeError当输入数据包含TZ感知的日期时间和时间增量时 (GH12620 )窃听
pd.concat未处理空Series恰如其分 (GH11082 )Bug in
.plot.baralignment whenwidthis specified withint(GH12979)窃听
fill_value如果二元运算符的参数是常量,则忽略 (GH12723 )窃听
pd.read_html()当使用BS4风格和解析表时,只有一个标题和一列 (GH9178 )窃听
.pivot_table什么时候margins=True和dropna=True空值仍然影响保证金计算 (GH12577 )窃听
.pivot_table什么时候dropna=False表索引名/列名消失的位置 (GH12133 )窃听
pd.crosstab()什么时候margins=True和dropna=False这引发了 (GH12642 )窃听
Series.name什么时候name属性可以是可哈希类型 (GH12610 )窃听
.describe()重置分类列信息 (GH11558 )BUG在哪里
loffset调用时未应用参数resample().count()在时间系列片上 (GH12725 )pd.read_excel()now accepts column names associated with keyword argumentnames(GH12870)Bug in
pd.to_numeric()withIndexreturnsnp.ndarray, rather thanIndex(GH12777)Bug in
pd.to_numeric()with datetime-like may raiseTypeError(GH12777)Bug in
pd.to_numeric()with scalar raisesValueError(GH12777)
贡献者#
共有60人为此次发布贡献了补丁。名字中带有“+”的人第一次贡献了一个补丁。
Andrew Fiore-Gartland +
Bastiaan +
Benoît Vinot +
Brandon Rhodes +
DaCoEx +
Drew Fustin +
Ernesto Freitas +
Filip Ter +
Gregory Livschitz +
Gábor Lipták
Hassan Kibirige +
Iblis Lin
Israel Saeta Pérez +
Jason Wolosonovich +
Jeff Reback
Joe Jevnik
Joris Van den Bossche
Joshua Storck +
Ka Wo Chen
Kerby Shedden
Kieran O'Mahony
Leif Walsh +
Mahmoud Lababidi +
Maoyuan Liu +
Mark Roth +
Matt Wittmann
MaxU +
Maximilian Roos
Michael Droettboom +
Nick Eubank
Nicolas Bonnotte
OXPHOS +
Pauli Virtanen +
Peter Waller +
Pietro Battiston
Prabhjot Singh +
Robin Wilson
Roger Thomas +
Sebastian Bank
Stephen Hoover
Tim Hopper +
Tom Augspurger
WANG Aiyong
Wes Turner
Winand +
Xbar +
Yan Facai +
adneu +
ajenkins-cargometrics +
behzad nouri
chinskiy +
gfyoung
jeps-journal +
jonaslb +
kotrfa +
nileracecrew +
onesandzeroes
rs2 +
sinhrks
tsdlovell +