如何使用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。
答案 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'])