【问题标题】:Keep 'true' as string and 'True' as boolean with pandas read_csv function使用 pandas read_csv 函数将“真”保留为字符串,将“真”保留为布尔值
【发布时间】:2020-03-22 21:09:36
【问题描述】:

让我解释一下我的问题。

我有一个 .csv,其中包含带有 'False''True' 的列以及其他带有 'true''false' 的列(注意是否存在大写字母)。

我可以使用 pandas read_csv 函数将第一个函数直接转换为 Python 布尔值 TrueFalse

但是,我想将 'true''false' 保留为字符串,但它们会转换为 Python 布尔值 TrueFalse

有没有办法将它们保存为字符串?


我知道 true_values 可选关键字来添加值以认为是 True,但它会添加值,而不是替换值以考虑 True。

如果遇到 this 其他 StackOverlow 帖子但无法将其应用于我的问题,因为我想要一些带有 True 的列和一些带有 'true' 的列,这是知道哪些列需要是字符串或不是读取数据(但它因此被转换为这篇文章)。

提前感谢您的帮助,

【问题讨论】:

  • 所以你想要一个包含布尔值和字符串的列?
  • 您是否尝试将这些列的dtype 定义为str
  • @DanielMesejo 不,每一列都有一个单独的类型,当有“真”或“假”时,我知道只有正确的布尔值。但是,当有“真”或“假”时,它只是字符串。
  • @VictorGalisson 所以将它们全部定义为字符串,然后在python中读取它们。
  • 如果您打算自己进行类型推断,也许this 会有所帮助

标签: python python-3.x pandas


【解决方案1】:

说明 Aryerez 的评论,您可以指定 dtype。给定一个包含

的 csv 'test.csv'
a,b
True,true
False,false

你可以打电话

import pandas as pd
df = pd.read_csv('test.csv', dtype={'a': bool, 'b': str})

给你

df
Out[5]: 
       a      b
0   True   true
1  False  false

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):
a    2 non-null bool
b    2 non-null object
dtypes: bool(1), object(1)
memory usage: 146.0+ bytes

您还可以将列映射回str,例如比如linked post

df['b'] = df['b'].map({True: 'true', False: 'false'})

但是,在这两种情况下,您都需要有关数据的信息 - 特定列的名称或列的 dtype

【讨论】:

  • 感谢您的回答,但不幸的是,这意味着我需要先找到哪些列需要是字符串,我的问题是这样做,我需要先读取数据(已转换)。
猜你喜欢
  • 1970-01-01
  • 2016-03-13
  • 2020-02-19
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多