如何比较DataFrame与if条件?

时间:2019-06-21 16:31:29

标签: python pandas jupyter-notebook

如何使用if条件创建一个新的DataFrame?

df = pd.DataFrame()
trips = pd.read_csv('trips.csv')
stops = pd.read_csv('stops.csv')
stop_times= pd.read_csv('stop_times.csv')

route_id = trips['route_id']
trip_id = trips['trip_id'] #deve coincidere con rip_id_stopTimes
direction_id = trips['direction_id']  # 0 -> andata, 1 -> ritorno

trip_id_stopTimes = stop_times['trip_id'] #deve coincidere con trip_id
stop_id = stop_times['stop_id'] #deve coincidere con stop_code

stop_code = stops['stop_code'] #deve coincidere con stop_id
stop_lat = stops['stop_lat']
stop_lon = stops['stop_lon']
stop_name = stops['stop_name']

#here is the problem
if str(trip_id_stopTimes) == str(trip_id) and str(stop_id) == str(stop_code):
    df['NUMEROAMAT'] = route_id
    df['IDVIAGGIO'] = trip_id
    df['ANDATA/RITORNO'] = direction_id
    df['IDVIAGGIO2'] = trip_id_stopTimes
    df['IDFERMATA'] = stop_id
    df['IDFERMATA2'] = stop_code
    df['LATITUDINEFERMATA'] = stop_lat
    df['LONGITUDINEFERMATA'] = stop_lon
    df['NOMEFERMATA'] = stop_name

df.to_csv('Amat_finale.csv', index=False, encoding='utf-8')

我必须基于if条件创建一个新的DataFrame。

2 个答案:

答案 0 :(得分:0)

这能使您到达那里吗?看起来您只是在测试真值。

可以创建一系列事实,并以此来创建数据框。现在,我已经更仔细地阅读了开始内容,很难在没有看到一些数据并且自己可以自己完成一些工作的情况下,为您提供所需的确切信息。

truths = (trip_id_stopTimes.apply(str) == trip_id.apply(str)) & \
   (stop_id.apply(str) == stop_code.apply(str))

以上内容为您提供了真实值,您可以将其用于过滤值。想到的一件事是,现在如何设置它,它假定csv文件的长度和顺序是相同的,等等。您可能要考虑使用.merge()来获取数据帧并将它们连接在一起。

答案 1 :(得分:0)

要比较DataFrame列,有效的解决方案是使用.equals

if stop_times['trip_id'].equals(trips['trip_id']) and stop_times['stop_id'].equals(stops['stop_code']):
    # creation of your dataframe here

此外,您已经声明了一个空的Dataframe而不声明了列,这可能就是为什么它创建了一个空文件。

尝试声明已声明列名称的空数据框

df = pd.DataFrame(columns=['NUMEROAMAT','IDVIAGGIO','ANDATA/RITORNO','IDVIAGGIO2','IDFERMATA','IDFERMATA2','LATITUDINEFERMATA','LONGITUDINEFERMATA','NOMEFERMATA'])