【问题标题】:Editing data in CSV files using Pandas使用 Pandas 编辑 CSV 文件中的数据
【发布时间】:2015-02-02 10:16:17
【问题描述】:

我有一个包含以下数据的 CSV 文件:

Time    Pressure
 0  2.9852.988
 10 2.9882.988
 20 2.9902.990
 30 2.9882.988
 40 2.9852.985
 50 2.9842.984
 60 2.9852.985.....

由于某种原因,第二列用 2 个小数点分隔。我正在尝试使用 pandas 创建一个 dataFrame,但如果不删除第二个小数点就无法继续。我无法手动执行此操作,因为我的文件中有数千个数据点。有什么想法吗?

【问题讨论】:

  • 预期输出是什么?修剪小数点后的所有内容?
  • 是的,没错 :) 包括小数点本身
  • 那么你想保留小数点所以输出应该是2.9852
  • 重点是要保留为字符串还是转换为浮点数?
  • 是的,我希望输出是你提到的浮点数... 2.9852

标签: python csv pandas dataframe


【解决方案1】:

您可以调用向量化的str 方法在小数点处拆分字符串,加入拆分结果但丢弃最后一个元素,这会产生例如一个列表[2,9852],然后您将其与小数点连接:

In [28]:

df['Pressure'].str.split('.').str[:-1].str.join('.')
Out[28]:
0    2.9852
1    2.9882
2    2.9902
3    2.9882
4    2.9852
5    2.9842
6    2.9852
Name: Pressure, dtype: object

如果要将字符串转换为浮点数,请调用astype:

In [29]:

df['Pressure'].str.split('.').str[:-1].str.join('.').astype(np.float64)
Out[29]:
0    2.9852
1    2.9882
2    2.9902
3    2.9882
4    2.9852
5    2.9842
6    2.9852
Name: Pressure, dtype: float64

只需记住将转换分配回原始 df:

df['Pressure'] = df['Pressure'].str.split('.').str[:-1].str.join('.').astype(np.float64)

【讨论】:

  • 为什么加入 , 然后用 . 替换它。不能直接加入.吗?
  • @joris 是的,你是对的,出于某种原因,我认为我需要匹配临时列表中出现的逗号,我会更新,感谢您指出这一点
  • 这真是太棒了。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2021-11-15
  • 2021-09-28
  • 2014-01-15
  • 1970-01-01
  • 2019-01-31
相关资源
最近更新 更多