【问题标题】:Removing space in dataframe python删除数据框python中的空间
【发布时间】:2015-11-22 09:13:54
【问题描述】:

我的代码出现错误,因为我试图通过调用 csv 中的元素来创建数据框。我从文件中调用了两列:CompanyName 和 QualityIssue。质量问题分为三种类型:设备质量、用户和两者都不是。我在尝试制作数据框 df.Equipment Quality 时遇到了问题,这显然不起作用,因为那里有空间。我想从原始文件中获取设备质量并用下划线替换空格。

输入:

Top Calling Customers,         Equipment Quality,    User,    Neither,
Customer 3,                      2,           2,        0,
Customer 1,                      0,           2,        1,
Customer 2,                      0,           1,        0,
Customer 4,                      0,           1,        0,

这是我的代码:

import numpy as np
import pandas as pd
import pandas.util.testing as tm; tm.N = 3

# Get the data.
data = pd.DataFrame.from_csv('MYDATA.csv')   
# Group the data by calling CompanyName and QualityIssue columns.
byqualityissue = data.groupby(["CompanyName", "QualityIssue"]).size() 
# Make a pandas dataframe of the grouped data.
df = pd.DataFrame(byqualityissue) 
# Change the formatting of the data to match what I want SpiderPlot to read.
formatted = df.unstack(level=-1)[0]  
# Replace NaN values with zero.
formatted[np.isnan(formatted)] = 0 
includingtotals = pd.concat([formatted,pd.DataFrame(formatted.sum(axis=1), 
                             columns=['Total'])], axis=1)
sortedtotal = includingtotals.sort_index(by=['Total'], ascending=[False])
sortedtotal.to_csv('byqualityissue.csv')

这似乎是一个常见问题,我尝试了很多解决方案,但它们似乎都不起作用。这是我尝试过的:

with open('byqualityissue.csv', 'r') as f:
    reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
    return [[x.strip() for x in row] for row in reader]
    sentence.replace(" ", "_")

sortedtotal['QualityIssue'] = sortedtotal['QualityIssue'].map(lambda x: x.rstrip(' ')) 

我认为从这里最有前途的http://pandas.pydata.org/pandas-docs/stable/text.html

formatted.columns = formatted.columns.str.strip().str.replace(' ', '_')

但我收到此错误:AttributeError: 'Index' object has no attribute 'str'

提前感谢您的帮助!

【问题讨论】:

  • 你可以做 df.columns = pd.Series(df.columns).str.replace(' ','_') 顺便说一句,你为什么不只是做 df['Equipment Quality'] 这将始终有效,而不是尝试将列作为属性访问,但不会?
  • @EdChum 是的!感谢您的旁白,因为我想这应该是真正的问题,而不是解决方法。我不确定语法,但效果更好。
  • 虽然这是较老的问题,但answerRemoving space from columns in pandas 更适合熊猫,具有更多的观看次数/投票数。

标签: python pandas whitespace dataframe strip


【解决方案1】:

试试:

formatted.columns = [x.strip().replace(' ', '_') for x in formatted.columns]

【讨论】:

    【解决方案2】:

    据我了解你的问题,以下应该可以工作(用inplace=False 测试一下,如果你想小心的话,首先看看它的外观):

    sortedtotal.rename(columns=lambda x: x.replace(" ", "_"), inplace=True)
    

    如果列名周围有空格,例如:“This example”

    sortedtotal.rename(columns=lambda x: x.strip().replace(" ", "_"), inplace=True)
    

    去除前导/尾随空格,然后将内部空格转换为“_”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-19
      • 2019-09-28
      • 2020-03-13
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      相关资源
      最近更新 更多