在python pandas过滤器中编辑数据并将其应用于原始数据fram

2024-04-18 07:50:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找出如何过滤pandas中的数据,然后为满足筛选条件的项目的列中的所有行分配一个值,并使其影响原始数据帧。 这是我迄今为止最接近的一次尝试,但它抛出了大量信息警告:

    import pandas as pd
    df = pd.read_csv('http://www.sharecsv.com/dl/9096d32f98aa0ac671a1cca16fa43be8/SalesJan2009.csv')
    df['Zone'] = ''
    zone1 = df[(df['Latitude'] > 0) & (df['Latitude'] > 0)]
    zone2 = df[(df['Latitude'] < 0) & (df['Latitude'] > 0)]
    zone3 = df[(df['Latitude'] > 0) & (df['Latitude'] < 0)]
    zone4 = df[(df['Latitude'] < 0) & (df['Latitude'] < 0)]
    zone1[['Zone']] = zone1[['Zone']] = 1
    zone2[['Zone']] = zone1[['Zone']] = 2
    zone3[['Zone']] = zone1[['Zone']] = 3
    zone4[['Zone']] = zone1[['Zone']] = 4
    df

这根本不会影响原始数据帧,但会设置过滤后的子集中的值。在

我假设我可能需要过滤掉符合我每个过滤器的所有内容,并将其从原始过滤器中删除,然后将更改连接回原始过滤器??在

这是一个随机数据集,用来说明我要做什么,但是我的实际数据集包含的数据不符合任何筛选条件,我需要将这些数据保持为未知,因为我没有像本例中那样消耗所有行。在

我尽量避免必须循环每一行,并检查每一行的标准,所以如果有人知道我如何才能做到这一点,我会非常感谢!在


Tags: csv数据项目zone过滤器pandasdf原始数据
2条回答

IIUC,你想做这样的事情:

zone1 = (df['Latitude'] > 0) & (df['Longitude'] > 0)
zone2 = (df['Latitude'] < 0) & (df['Longitude'] > 0)
zone3 = (df['Latitude'] > 0) & (df['Longitude'] < 0)
zone4 = (df['Latitude'] < 0) & (df['Longitude'] < 0)

df['Zone'] = np.select([zone1,zone2,zone3,zone3],['Zone 1','Zone 2', 'Zone 3','Zone 4'])

输出:

^{pr2}$

您没有注意到这两个条件都在检查纬度,您应该检查.loc,以便学习如何正确地更改数据帧部分的值。在

import pandas as pd
df = pd.read_csv('http://www.sharecsv.com/dl/9096d32f98aa0ac671a1cca16fa43be8/SalesJan2009.csv')
df['Zone'] = ''
zone1 = (df['Latitude'] > 0) & (df['Longitude'] > 0)
zone2 = (df['Latitude'] < 0) & (df['Longitude'] > 0)
zone3 = (df['Latitude'] > 0) & (df['Longitude'] < 0)
zone4 = (df['Latitude'] < 0) & (df['Longitude'] < 0)
df.loc[zone1, 'Zone'] = 1
df.loc[zone2, 'Zone'] = 2
df.loc[zone3, 'Zone'] = 3
df.loc[zone4, 'Zone'] = 4
df

相关问题 更多 >