我有DataFrame,其中一列包含格式為行的字典:
rates
0 {'time': '2022-06-05T19:25:57.3000000Z', 'asset_id_quote': '0X', 'rate': 73571.98764837519}
1 {'time': '2022-06-05T19:25:57.3000000Z', 'asset_id_quote': '18C', 'rate': 11607635.869234081}
2 {'time': '2022-06-05T19:25:57.3000000Z', 'asset_id_quote': '1EARTH', 'rate': 4162937.862828232}
3 {'time': '2022-06-05T19:25:57.3000000Z', 'asset_id_quote': '1ECO', 'rate': 7337.697146675354}
4 {'time': '2022-06-05T19:25:57.3000000Z', 'asset_id_quote': '1INCH', 'rate': 34645.31024605586}
... ...
4917 {'time': '2022-06-05T19:25:07.1000000Z', 'asset_id_quote': 'SEK', 'rate': 291937.0479618742}
4918 {'time': '2022-06-05T19:25:07.1000000Z', 'asset_id_quote': 'SGD', 'rate': 41146.239317767526}
4919 {'time': '2022-06-05T19:25:07.1000000Z', 'asset_id_quote': 'THB', 'rate': 1026548.5675256335}
4920 {'time': '2022-06-05T19:25:07.1000000Z', 'asset_id_quote': 'TRY', 'rate': 495117.01581884566}
4921 {'time': '2022-06-05T19:25:07.1000000Z', 'asset_id_quote': 'ZAR', 'rate': 463779.32985313266}
我如何在回圈中決議它以洗掉字母T并Z從中洗掉并將格式更改為yyyy-mm-dd hh:mm:ss?
我試過像:
def change_colomns_format(self, colomn_in_df1):
df = self.getting_response_and_df()
for i in colomn_in_df1:
for x in i:
x = [x[:19].replace("T", " ") for x in i]
print (i)
return df
但這當然是錯誤的。
uj5u.com熱心網友回復:
這是使用 extract 和 regex 提取時間的方法
模式中的假設是時間將顯示為“ 'time': '2022-06-05T19:25:07.1000000Z' ”
df['time'] = df['dict'].str.extract(r"(time': ')(.*)(Z)")[1]
使用正則運算式洗掉 T 和 Z 這是一個例子
df['time'].str.replace(r'[T|Z]',' ', regex=True)
結果是
time 2022-06-05 19:25:57.3000000
或者
df['time'].astype('datetime64')
結果是
time 2022-06-05 19:25:57.300
或者
df['time'].astype('datetime64').dt.strftime('%Y-%m-%d %H:%M:%S')
結果是
time 2022-06-05 19:25:57
uj5u.com熱心網友回復:
您可以使用pd.json_normalize從rates列創建資料框,然后修復格式,最后用于to_dict重新創建字典:
df['rates'] = (pd.json_normalize(df['rates'])
.assign(time=lambda x: x['time'].str[:-1].str.replace('T', ' '))
.to_dict('records'))
print(df)
# Output
rates
0 {'time': '2022-06-05 19:25:57.3000000', 'asset_id_quote': '0X', 'rate': 73571.98764837519}
1 {'time': '2022-06-05 19:25:57.3000000', 'asset_id_quote': '18C', 'rate': 11607635.869234081}
2 {'time': '2022-06-05 19:25:57.3000000', 'asset_id_quote': '1EARTH', 'rate': 4162937.862828232}
3 {'time': '2022-06-05 19:25:57.3000000', 'asset_id_quote': '1ECO', 'rate': 7337.697146675354}
4 {'time': '2022-06-05 19:25:57.3000000', 'asset_id_quote': '1INCH', 'rate': 34645.31024605586}
4917 {'time': '2022-06-05 19:25:07.1000000', 'asset_id_quote': 'SEK', 'rate': 291937.0479618742}
4918 {'time': '2022-06-05 19:25:07.1000000', 'asset_id_quote': 'SGD', 'rate': 41146.239317767526}
4919 {'time': '2022-06-05 19:25:07.1000000', 'asset_id_quote': 'THB', 'rate': 1026548.5675256335}
4920 {'time': '2022-06-05 19:25:07.1000000', 'asset_id_quote': 'TRY', 'rate': 495117.01581884566}
4921 {'time': '2022-06-05 19:25:07.1000000', 'asset_id_quote': 'ZAR', 'rate': 463779.32985313266}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486108.html
