Mohamed Elnemr نشر 2 سبتمبر 2021 أرسل تقرير نشر 2 سبتمبر 2021 لدي بيانات على هيئة dataframe بحيث أن بها عمود به التاريخ. هل هناك طريقة لإختيار عدد من الأعمدة بين تاريخين معينين ، كالفترة بين 1/9/2021 و 10/9/2021؟ 1 اقتباس
0 Ahmed Sharshar نشر 2 سبتمبر 2021 أرسل تقرير نشر 2 سبتمبر 2021 في البداية عليك أن تتاكد أن عمود التاريخ على هيئة datetime كالتالي: df['date'] = pd.to_datetime(df['date']) بعد ذلك تختار الفترة التي تريد اختيار الصفوف بينها كالتالي: mask = (df['date'] > start_date) & (df['date'] <= end_date) مثال على البيانات الخاصة بك، يمكنك اختبار الكود التالي: import numpy as np import pandas as pd df = pd.DataFrame(np.random.random((200,3))) df['date'] = pd.date_range('2021-1-1', periods=200, freq='D') mask = (df['date'] > '2021-9-1') & (df['date'] <= '2021-9-10') print(df.loc[mask]) ويكون الخرج كالتالي: 0 1 2 date 153 0.208875 0.727656 0.037787 2021-09-02 154 0.750800 0.776498 0.237716 2021-09-03 155 0.812008 0.127338 0.397240 2021-09-04 156 0.639937 0.207359 0.533527 2021-09-05 157 0.416998 0.845658 0.872826 2021-09-06 158 0.440069 0.338690 0.847545 2021-09-07 159 0.202354 0.624833 0.740254 2021-09-08 160 0.465746 0.080888 0.155452 2021-09-09 161 0.858232 0.190321 0.432574 2021-09-10 أو يمكنك الدالة df.loc[start_date:end_date] لاختيار الفترة التي تريدها كالتالي: import numpy as np import pandas as pd df = pd.DataFrame(np.random.random((200,3))) df['date'] = pd.date_range('2021-1-1', periods=200, freq='D') df = df.set_index(['date']) print(df.loc['2021-9-1':'2021-9-10']) ويكون لها نفس الخرج كالدالة السابقة. 1 اقتباس
0 Ali Haidar Ahmad نشر 2 سبتمبر 2021 أرسل تقرير نشر 2 سبتمبر 2021 (معدل) يمكنك القيام بذلك كالتالي: import numpy as np import pandas as pd # إنشاء داتا فريم ببيانات عشوائية df = pd.DataFrame(np.random.random((10, 2))) df['date'] = pd.date_range('2017-1-1', periods=10, freq='D') df """ 0 1 date 0 0.398304 0.199462 2017-01-01 1 0.298642 0.960583 2017-01-02 2 0.172924 0.955810 2017-01-03 3 0.802121 0.691403 2017-01-04 4 0.584322 0.949568 2017-01-05 5 0.499019 0.667226 2017-01-06 6 0.069219 0.153963 2017-01-07 7 0.951769 0.758855 2017-01-08 8 0.485271 0.415563 2017-01-09 9 0.330080 0.561897 2017-01-10 """ # سنختار البيانات التي تقع ضمن التاريخ # "2017-01-3", "2017-01-6" range = df[df["date"].isin(pd.date_range("2017-01-3", "2017-01-6"))] range """ 0 1 date 2 0.722369 0.145827 2017-01-03 3 0.540575 0.378795 2017-01-04 4 0.341897 0.406917 2017-01-05 5 0.919453 0.810913 2017-01-06 """ أو الحل الأبسط وهو إنشاء استعلام كالتالي: start_date, end_date = "2017-01-3", "2017-01-6" df.query('date >= @start_date and date <= @end_date') """ 0 1 date 2 0.722369 0.145827 2017-01-03 3 0.540575 0.378795 2017-01-04 4 0.341897 0.406917 2017-01-05 5 0.919453 0.810913 2017-01-06 """ أو يمكنك استخدام df.loc بعد أن تحدد له البداية والنهاية كالتالي: start = df[df['date']=='2017-01-03'].index[0] end = df[df['date']=='2017-01-6'].index[0] df.loc[start:end] """ 0 1 date 2 0.722369 0.145827 2017-01-03 3 0.540575 0.378795 2017-01-04 4 0.341897 0.406917 2017-01-05 5 0.919453 0.810913 2017-01-06 """ تم التعديل في 2 سبتمبر 2021 بواسطة Ali Haidar Ahmad اقتباس
السؤال
Mohamed Elnemr
لدي بيانات على هيئة dataframe بحيث أن بها عمود به التاريخ.
هل هناك طريقة لإختيار عدد من الأعمدة بين تاريخين معينين ، كالفترة بين 1/9/2021 و 10/9/2021؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.