需要一些关于在pandas数据框中处理数据的帮助。任何帮助都是最受欢迎的。
我有CSV格式的OHCLV数据。我已经将文件加载到pandas数据框中。
如何将体积列从2.90K转换为2900或从5.2M转换为5200000。该列可以包含以千为单位的K和以百万为单位的M。
import pandas as pd
file_path = '/home/fatjoe/UCHM.csv'
df = pd.read_csv(file_path, parse_dates=[0], index_col=0)
df.columns = [
"closing_price",
"opening_price",
"high_price",
"low_price",
"volume",
"change"]
df['opening_price'] = df['closing_price']
df['opening_price'] = df['opening_price'].shift(-1)
df = df.replace('-', 0)
df = df[:-1]
print(df.head())
Console:
Date
2016-09-23 0
2016-09-22 9.60K
2016-09-21 54.20K
2016-09-20 115.30K
2016-09-19 18.90K
2016-09-16 176.10K
2016-09-15 31.60K
2016-09-14 10.00K
2016-09-13 3.20K
7条答案
按热度按时间r1zhe5dt1#
jgzswidk2#
假设你有以下的DF:
你可以这样做:
说明:
vc9ivgsu3#
DataFrame.replace
与pd.eval
我喜欢MaxU的答案。你可以使用
pd.eval
来大大缩短它:稍微修改一下也会使大小写不敏感:
说明
假设“瓦尔”是一列字符串,则
replace
运算产生:这是一个
pd.eval
可以计算的算术表达式!qmb5sa224#
为了进一步推广CS95的答案,我会这样做:
因为在某些数值上,pd.eval必须将'-'乘以其他数字,这将导致错误。(无法将字符串转换为浮点'-')
wdebmtf25#
可以使用
numerize
库,太简单了!使用
结果:
dsekswqp6#
dauxcl2d7#
这段代码用于将“€##.#K”或“€##.#M”格式的字符串转换为int