亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 python 中追加行中最近的行

如何在 python 中追加行中最近的行

qq_花開花謝_0 2022-09-06 15:45:59
我有一個包含6行和3列的數據表。a b c d e fg h i j k lm n o p q r我想在每行中追加最接近的2行。將追加 1 個上行和下行 1 個。a b c d e f g h i d e f g h i j k lg h i j k l m n oj k l m n o p q r我該怎么做?感謝您的幫助。!!
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

您可以通過1行代碼來實現這一點。這是一個例子


import pandas as pd

a = pd.DataFrame([

    ['a', 'b', 'c'],

    ['d', 'e', 'f'],

    ['g', 'h', 'i'],

    ['j', 'k', 'l'],

    ['m', 'n', 'o'],

    ['p', 'q', 'r']

])

現在將數據幀移動 1 行并連接它們


a_1 = a.shift(-1)

a_2 = a.shift(-2)

c = pd.concat([a, a_1, a_2], axis=1)

然后更正新數據幀中的行


c = c.iloc[:-2]

完整代碼如下


a = pd.DataFrame([

    ['a', 'b', 'c'],

    ['d', 'e', 'f'],

    ['g', 'h', 'i'],

    ['j', 'k', 'l'],

    ['m', 'n', 'o'],

    ['p', 'q', 'r']

])

b = pd.concat([a, a.shift(-1), a.shift(-2)], axis=1).iloc[:-2]

print(a)

print(b)

不要忘記重命名索引和列。


查看完整回答
反對 回復 2022-09-06
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

您可以通過numpy.ravel使用具有扁平值的步幅,最后通過索引選擇每行:3th

def rolling_window(a, window):

    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)

    strides = a.strides + (a.strides[-1],)

    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)


a = rolling_window(df.to_numpy().ravel(), 9)[::3]

print (a)

[['a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i']

 ['d' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l']

 ['g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o']

 ['j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r']]


df = pd.DataFrame(a)

print (df)

   0  1  2  3  4  5  6  7  8

0  a  b  c  d  e  f  g  h  i

1  d  e  f  g  h  i  j  k  l

2  g  h  i  j  k  l  m  n  o

3  j  k  l  m  n  o  p  q  r

一般解決方案:


N = 3

M = len(df.columns)

a = rolling_window(df.to_numpy().ravel(), M*N)[::M]


查看完整回答
反對 回復 2022-09-06
  • 2 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號