我抓取了一个房地产网站,并生成了一个CSV输出,其中的数据需要清理和结构化。到目前为止,我的代码正确地组织和重新格式化了数据,使其能够与统计软件一起工作。
然而,每一行和"总面积"列的m2值都是错误的。正确的值出现在另一列("Furbished")中。
| 总面积|提供|
| - ------| - ------|
| 170 #错误|190平方米|
| 170 #错误|190平方米|
| 160#正确|是的|
| 155号正确|没有|
我尝试使用np.where函数。但是,我无法指定基于字符串长度的条件,这将允许我以列'Furbished'中的所有'___m2'值为目标,并将它们重新插入'Gross_area'中。
df['Gross area']=np.where(len(df['Furbished]) == 6, df['Furbished'],df['Gross area']
作为替代方法,我尝试设置累积条件以精确定位'___m2'值,并将其插入'总面积'列。
df['Gross area']=np.where((df['Furbished]) != 'Yes' or 'No', df['Furbished'],df['Gross area']
我追求的结果是:
| 总面积|提供|
| - ------| - ------|
| 190平方米|190平方米|
| 190平方米|190平方米|
| 一百六十|是的|
有什么建议吗?列Furbished字符串长度标准将是最好的选择,因为我有其他示例需要同样的处理:)
提前感谢您的帮助!
3条答案
按热度按时间j8yoct9x1#
可能有更好的方法来实现这一点,但是您可以通过一个简单的
df.apply()
函数来获得预期的效果。通过一个简单的更改,您还可以使
'Gross area'
列保持正确的类型。lb3vh1jj2#
您可以使用
pd.where
:这告诉您,如果
Furbished
列的长度为6,则使用该列中的值,否则使用Gross_area
列中的值。结果:
vatpfxk53#
非常感谢您的帮助!Derek的建议是在我的程序中实现起来最简单的:
我可以创建一组规则来替换或删除所有错误引用的数据:)
如果列B等于给定字符串,则更新给定列A中的数据
替换在列行中找到的字符串段
如果在现有目标列行中找到值A,则创建新列并附加标准值B
如果在现有列Y中找到值A,则在现有列X中追加预设值B。
希望这能帮到什么人。