如何使用pandas更改CSV中的实际内容,而不仅仅是更改数据框架



所以我的问题是每次我在数据框中做一些清理时,修改的数据框没有将更改保存到新的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中更改数据框行的数据类型?(接受的答案)。问候…

相关内容