第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用 re.compile().split() 遍歷數(shù)據(jù)幀行

使用 re.compile().split() 遍歷數(shù)據(jù)幀行

月關(guān)寶盒 2022-11-18 16:38:35
我有一個由 1 列和幾行組成的數(shù)據(jù)框。這些行中的每一行都以相同的方式構(gòu)造:-timestamp- value1 value2 value3 -timestamp- value 4 value5 value6 ...時間戳具有以下格式:YYYY-MM-DD HH:MM:SS值是帶 2 位小數(shù)的數(shù)字。我想制作一個新的數(shù)據(jù)框,其中一行有單獨(dú)的時間戳,下一行有相關(guān)值。我設(shè)法使用正則表達(dá)式按行獲得預(yù)期結(jié)果,但不是針對整個數(shù)據(jù)框。到目前為止我的代碼:#input dataframedata.head()                  values0   2020-05-12 10:00:00 12.07 13 11.56 ... 2020-05-12 10:00:01 11.49 17 5.67...1   2020-05-12 10:01:00 11.49 17 5.67 ... 2020-05-12 10:01:01 12.07 13 11.56...2   2020-05-12 10:02:00 14.29 18 11.28 ... 2020-05-12 10:02:01 13.77 18 7.43...test = data['values'].iloc[0] #first row of datarow1 = re.compile("(\d\d\d\d\S\d\d\S\d\d\s\d\d\S\d\d\S\d\d)").split(test)df_row1 = pd.DataFrame(row1)df_row1.head()             values 0   2020-05-12 10:00:001   12.07 13.79 15.45 17.17 18.91 14.91 12.35 14....2   2020-05-12 10:00:013   12.48 13.96 13.88 15.57 18.46 15.0 13.65 14.6...#trying the same for the entire dataframe for row in data:    df_new = re.compile("(\d\d\d\d\S\d\d\S\d\d\s\d\d\S\d\d\S\d\d)").split(row)print(df_new)['values']我現(xiàn)在的問題是如何循環(huán)遍歷數(shù)據(jù)框的行并獲得預(yù)期的結(jié)果?
查看完整描述

1 回答

?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個贊

如果您想首先拆分行并將值提取到列中,請注意您可以使用str.extract. 在您的正則表達(dá)式中使用命名分組,它將自動為您的數(shù)據(jù)框分配列


split_line = r"\s+(?=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})"

extract_values = r"(?P<date>\d{4}-\d{2}-\d{2})\s(?P<time>\d{2}:\d{2}:\d{2})\s(?P<value_one>.*?)\s(?P<value_two>.*?)\s(?P<value_three>.*?)$"


df = pd.DataFrame([{

    "value": "2020-05-12 10:00:00 12.07 13 11.56 2020-06-12 11:00:00 13.07 16 11.16 2020-05-12 10:00:01 11.49 17 5.67", 

},{

    "value": "2020-05-13 10:00:00 14.07 13 15.56 2020-05-16 10:00:02 11.51 18 5.69", 

}])

df = df["value"].str.split(split_line).explode().str.extract(extract_values, expand=True)

print(df)

#          date      time value_one value_two value_three

# 0  2020-05-12  10:00:00     12.07        13       11.56

# 0  2020-06-12  11:00:00     13.07        16       11.16

# 0  2020-05-12  10:00:01     11.49        17        5.67

# 1  2020-05-13  10:00:00     14.07        13       15.56

# 1  2020-05-16  10:00:02     11.51        18        5.69

如果您不知道日期和時間后的組數(shù),請使用split而不是正則表達(dá)式。我會建議這樣的事情:


split_line = r"\s+(?=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})"


df = pd.DataFrame([{

    "value": "2020-05-12 10:00:00 12.07 13 11.56 2020-06-12 11:00:00 13.07 16 11.16 2020-05-12 10:00:01 11.49 17 5.67", 

},{

    "value": "2020-05-13 10:00:00 14.07 13 14 15 15.56 2020-05-16 10:00:02 11.51 18 5.69", 

}])

df = df["value"].str.split(split_line).explode().reset_index()


df = df['value'].str.split(" ").apply(pd.Series)

df.columns = [f"col_{col}" for col in df.columns]

print(df)

#         col_0     col_1  col_2 col_3  col_4 col_5  col_6

# 0  2020-05-12  10:00:00  12.07    13  11.56   NaN    NaN

# 1  2020-06-12  11:00:00  13.07    16  11.16   NaN    NaN

# 2  2020-05-12  10:00:01  11.49    17   5.67   NaN    NaN

# 3  2020-05-13  10:00:00  14.07    13     14    15  15.56

# 4  2020-05-16  10:00:02  11.51    18   5.69   NaN    NaN


查看完整回答
反對 回復(fù) 2022-11-18
  • 1 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號