Too*_*ate 5 python excel pandas
我正在尝试使用 pd.read_excel() 读取 excel 文件。excel 文件有 2 列日期和时间,我想将这两列读取为 str 而不是 excel dtype。
excel文件示例
我试图指定 dtype 或转换器参数无济于事。
df = pd.read_excel('xls_test.xlsx',
dtype={'Date':str,'Time':str})
df.dtypes
Date object
Time object
dtype: object
Run Code Online (Sandbox Code Playgroud)
df.head()
Date Time
0 2020-03-08 00:00:00 10:00:00
1 2020-03-09 00:00:00 11:00:00
2 2020-03-10 00:00:00 12:00:00
3 2020-03-11 00:00:00 13:00:00
4 2020-03-12 00:00:00 14:00:00
Run Code Online (Sandbox Code Playgroud)
如您所见,Date 列不被视为 str...
使用转换器时同样的事情
df = pd.read_excel('xls_test.xlsx',
converters={'Date':str,'Time':str})
df.dtypes
Date object
Time object
dtype: object
Run Code Online (Sandbox Code Playgroud)
df.head()
Date Time
0 2020-03-08 00:00:00 10:00:00
1 2020-03-09 00:00:00 11:00:00
2 2020-03-10 00:00:00 12:00:00
3 2020-03-11 00:00:00 13:00:00
4 2020-03-12 00:00:00 14:00:00
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用其他引擎,但结果总是一样的。
dtype 参数在读取 csv 时似乎按预期工作
我在这里做错了什么?
编辑:我忘了提及,我使用的是最新版本的 Pandas 1.2.2,但在从 1.1.2 更新之前遇到了同样的问题。
小智 1
正如其他评论所说,这个问题很可能是一个错误
虽然不理想,但你总能做这样的事情吗?
import pandas as pd
#df = pd.read_excel('test.xlsx',dtype={'Date':str,'Time':str})
# this line can be then simplified to :
df = pd.read_excel('test.xlsx')
df['Date'] = df['Date'].apply(lambda x: '"' + str(x) + '"')
df['Time'] = df['Time'].apply(lambda x: '"' + str(x) + '"')
print (df)
print(df['Date'].dtype)
print(df['Time'].dtype)
Run Code Online (Sandbox Code Playgroud)
Date Time
0 "2020-03-08 00:00:00" "10:00:00"
1 "2020-03-09 00:00:00" "11:00:00"
2 "2020-03-10 00:00:00" "12:00:00"
3 "2020-03-11 00:00:00" "13:00:00"
4 "2020-03-12 00:00:00" "14:00:00"
5 "2020-03-13 00:00:00" "15:00:00"
6 "2020-03-14 00:00:00" "16:00:00"
7 "2020-03-15 00:00:00" "17:00:00"
8 "2020-03-16 00:00:00" "18:00:00"
9 "2020-03-17 00:00:00" "19:00:00"
10 "2020-03-18 00:00:00" "20:00:00"
11 "2020-03-19 00:00:00" "21:00:00"
object
object
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |