我有自己pandas
编写的DataFrame concat
.一行由96个值组成,我想从值72中拆分DataFrame.
这样一行的前72个值存储在Dataframe1中,而下一个24个值存储在Dataframe2中.
我创建我的DF如下:
temps = DataFrame(myData) datasX = concat( [temps.shift(72), temps.shift(71), temps.shift(70), temps.shift(69), temps.shift(68), temps.shift(67), temps.shift(66), temps.shift(65), temps.shift(64), temps.shift(63), temps.shift(62), temps.shift(61), temps.shift(60), temps.shift(59), temps.shift(58), temps.shift(57), temps.shift(56), temps.shift(55), temps.shift(54), temps.shift(53), temps.shift(52), temps.shift(51), temps.shift(50), temps.shift(49), temps.shift(48), temps.shift(47), temps.shift(46), temps.shift(45), temps.shift(44), temps.shift(43), temps.shift(42), temps.shift(41), temps.shift(40), temps.shift(39), temps.shift(38), temps.shift(37), temps.shift(36), temps.shift(35), temps.shift(34), temps.shift(33), temps.shift(32), temps.shift(31), temps.shift(30), temps.shift(29), temps.shift(28), temps.shift(27), temps.shift(26), temps.shift(25), temps.shift(24), temps.shift(23), temps.shift(22), temps.shift(21), temps.shift(20), temps.shift(19), temps.shift(18), temps.shift(17), temps.shift(16), temps.shift(15), temps.shift(14), temps.shift(13), temps.shift(12), temps.shift(11), temps.shift(10), temps.shift(9), temps.shift(8), temps.shift(7), temps.shift(6), temps.shift(5), temps.shift(4), temps.shift(3), temps.shift(2), temps.shift(1), temps, temps.shift(-1), temps.shift(-2), temps.shift(-3), temps.shift(-4), temps.shift(-5), temps.shift(-6), temps.shift(-7), temps.shift(-8), temps.shift(-9), temps.shift(-10), temps.shift(-11), temps.shift(-12), temps.shift(-13), temps.shift(-14), temps.shift(-15), temps.shift(-16), temps.shift(-17), temps.shift(-18), temps.shift(-19), temps.shift(-20), temps.shift(-21), temps.shift(-22), temps.shift(-23)], axis=1)
问题是:如何拆分它们?:)
iloc
df1 = datasX.iloc[:, :72] df2 = datasX.iloc[:, 72:]
使用np.split(...,axis = 1):
演示:
In [255]: df = pd.DataFrame(np.random.rand(5, 6), columns=list('abcdef')) In [256]: df Out[256]: a b c d e f 0 0.823638 0.767999 0.460358 0.034578 0.592420 0.776803 1 0.344320 0.754412 0.274944 0.545039 0.031752 0.784564 2 0.238826 0.610893 0.861127 0.189441 0.294646 0.557034 3 0.478562 0.571750 0.116209 0.534039 0.869545 0.855520 4 0.130601 0.678583 0.157052 0.899672 0.093976 0.268974 In [257]: dfs = np.split(df, [4], axis=1) In [258]: dfs[0] Out[258]: a b c d 0 0.823638 0.767999 0.460358 0.034578 1 0.344320 0.754412 0.274944 0.545039 2 0.238826 0.610893 0.861127 0.189441 3 0.478562 0.571750 0.116209 0.534039 4 0.130601 0.678583 0.157052 0.899672 In [259]: dfs[1] Out[259]: e f 0 0.592420 0.776803 1 0.031752 0.784564 2 0.294646 0.557034 3 0.869545 0.855520 4 0.093976 0.268974
np.split()
非常灵活 - 让我们将原始DF拆分为3个带有索引的列的DF [2,3]
:
In [260]: dfs = np.split(df, [2,3], axis=1) In [261]: dfs[0] Out[261]: a b 0 0.823638 0.767999 1 0.344320 0.754412 2 0.238826 0.610893 3 0.478562 0.571750 4 0.130601 0.678583 In [262]: dfs[1] Out[262]: c 0 0.460358 1 0.274944 2 0.861127 3 0.116209 4 0.157052 In [263]: dfs[2] Out[263]: d e f 0 0.034578 0.592420 0.776803 1 0.545039 0.031752 0.784564 2 0.189441 0.294646 0.557034 3 0.534039 0.869545 0.855520 4 0.899672 0.093976 0.268974