所以我的问题是每次我在数据框中做一些清理时,修改的数据框没有将更改保存到新的csv。我的代码有问题吗?
import pandas as pd
housing = pd.read_csv(csv_path)
# Modifying the data frame (removing any strings)
headers = ['Sold Price', 'Longitude', 'Latitude', 'Land Size', 'Total Bedrooms', 'Total Bathrooms', 'Parking Spaces']
for header_index in range(len(headers)):
for index in housing.index:
row = housing.at[index, headers[header_index]]
if row is not int or row is not float:
row = ''
housing.to_csv('propertyupdated.csv')
呼叫housing.to_csv('propertyupdated.csv')
后,我进入目录查看csv文件。这是原来的文件,我的修改没有保存到新的csv文件中。但是我知道我已经改变了python中的数据框架。
首先,你的代码有一个问题,你检查数据类型结果总是为真
您可以将DataFrame看作类似于numpy的列字典的东西。array-s (Ami Tavory)数据帧数据的类型是'numpy.dtype'>这意味着它们应该以不同的方式进行检查(参见代码)
我不太确定你想做什么,但在一个评论你说(我只是想确保每一个数据在我的csv是一个整数或浮点数)和如果是这种情况,您可以尝试删除不属于np.int64或np.float64类型的列…这只是一个示例df,其中的数据在更改后可以写入.csv文件。
import pandas as pd
import numpy as np
headers = ['ID', 'SIGN', 'BASE_1', 'BASE_2', 'BASE_3', 'VARIABLE', 'ONE_TENTH']
data = [[101, 'A', 10, 100, 1000, 'X', 0.1], [201, 'B', 20, 200, 2000, 'Y', 0.2], [301, 'C', 30, 300, 3000, 'Z', 0.3]]
df = pd.DataFrame(data, columns = headers)
for col in df.columns:
if df[col].dtype not in(np.int64, np.float64):
df = df.drop([col], axis=1)
Result = '''
d f B e f o r e
ID SIGN BASE_1 BASE_2 BASE_3 VARIABLE ONE_TENTH
0 101 A 10 100 1000 X 0.1
1 201 B 20 200 2000 Y 0.2
2 301 C 30 300 3000 Z 0.3
d f A f t e r
ID BASE_1 BASE_2 BASE_3 ONE_TENTH
0 101 10 100 1000 0.1
1 201 20 200 2000 0.2
2 301 30 300 3000 0.3
'''
…如果您真的想处理行并使用空字符串(仍然是字符串)更改一些数据,那么您可以找到操作行的方法如何在pandas中更改数据框行的数据类型?(接受的答案)。问候…