我有一個熊貓非數據幀,看起來像:結合的條件數據幀行
INPUT - 這裏的例子可運行代碼來創建輸入:
#Create Dataframe with example data
df_example = pd.DataFrame(columns=["START_D","ID_1", "ID_2", "STOP_D"])
df_example["START_D"] = ['2014-06-16', '2014-06-01', '2016-05-01','2014-05-28', '2014-05-20', '2015-09-01']
df_example['ID_1'] = [1,2,3,2,1,1]
df_example['ID_2'] = ['a', 'a', 'b', 'b', 'a', 'a']
df_example["STOP_D"] = ['2014-07-28', '2014-07-01', '2016-06-01', '2014-08-01', '2014-07-29', '2015-10-01']
#Convert to datetime
df_example["START_D"] = pd.to_datetime(df_example["START_D"])
df_example["STOP_D"] = pd.to_datetime(df_example["STOP_D"])
df_example
START_D ID_1 ID_2 STOP_D
0 2014-06-16 1 a 2014-07-28
1 2014-06-01 2 a 2014-07-01
2 2016-05-01 3 b 2016-06-01
3 2014-05-28 2 b 2014-08-01
4 2014-05-20 1 a 2014-07-29
5 2015-09-01 1 a 2015-10-01
和我正在尋找一種方式來按ID_1分組,併合並START_D和STOP_D重疊的行。 start_d最小,stop_d最大。 下面您可以看到所需的輸出,我得到了循環遍歷所有行(iterrows)並在一次檢查一個元素。
OUTPUT 即使這種方法的工作,我認爲它是緩慢的(對於大型DF),我認爲必須有一個更pythonic-pandas的方式來做到這一點。
>>> df_result
START_D ID_1 STOP_D
0 2014-05-20 1 2014-07-29
1 2014-05-28 2 2014-08-01
2 2016-05-01 3 2016-06-01
3 2015-09-01 1 2015-10-01
謝謝!
請檢查[如何使重複性好大熊貓的例子(http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – jezrael