【发布时间】:2020-04-29 01:17:13
【问题描述】:
当使用 Pandas 的 shift 方法时,它会重新分配与原始数据帧不同的 dtype,是否可以在不发生这种情况的情况下进行转移? (但仍在使用 pandas shift)
使用fill_value 参数几乎就足够了,但如果有任何不是数字的dtype,它仍然会改变dtype。
import pandas as pd
data = [
{'a': 1, 'b': 5.2, 'c': True},
{'a': 5, 'b': 8.5, 'c': False},
{'a': 2, 'b': 2.6, 'c': True}
]
df = pd.DataFrame(data)
print(df.dtypes)
print(df.shift(1).dtypes)
print(df.shift(1, fill_value=0).dtypes)
输出:
a int64
b float64
c bool
dtype: object
a float64
b float64
c object
dtype: object
a int64
b float64
c object
dtype: object
【问题讨论】:
-
它没有,我已经更新了问题以更好地解释它。