删除数据框 python 中的 space
Removing space in dataframe python
我的代码出现错误,因为我试图通过调用 csv 中的元素来制作数据框。我有两个从文件调用的列:CompanyName 和 QualityIssue。质量问题分为三种类型:设备质量、用户和两者都不是。我 运行 在尝试制作数据帧 df.Equipment 质量时遇到问题,这显然不起作用,因为那里有一个 space。我想从原始文件中获取设备质量并将 space 替换为下划线。
输入:
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'
提前感谢您的帮助!
尝试:
formatted.columns = [x.strip().replace(' ', '_') for x in formatted.columns]
据我了解你的问题,以下应该有效(如果你想小心的话,先用 inplace=False
测试一下,看看它看起来如何):
sortedtotal.rename(columns=lambda x: x.replace(" ", "_"), inplace=True)
如果列名周围有白色 space,例如:"This example "
sortedtotal.rename(columns=lambda x: x.strip().replace(" ", "_"), inplace=True)
去除 leading/trailing 白色 space,然后将内部 spaces 转换为“_”。
我的代码出现错误,因为我试图通过调用 csv 中的元素来制作数据框。我有两个从文件调用的列:CompanyName 和 QualityIssue。质量问题分为三种类型:设备质量、用户和两者都不是。我 运行 在尝试制作数据帧 df.Equipment 质量时遇到问题,这显然不起作用,因为那里有一个 space。我想从原始文件中获取设备质量并将 space 替换为下划线。
输入:
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'
提前感谢您的帮助!
尝试:
formatted.columns = [x.strip().replace(' ', '_') for x in formatted.columns]
据我了解你的问题,以下应该有效(如果你想小心的话,先用 inplace=False
测试一下,看看它看起来如何):
sortedtotal.rename(columns=lambda x: x.replace(" ", "_"), inplace=True)
如果列名周围有白色 space,例如:"This example "
sortedtotal.rename(columns=lambda x: x.strip().replace(" ", "_"), inplace=True)
去除 leading/trailing 白色 space,然后将内部 spaces 转换为“_”。