乘法除了
问题描述:
我已读csv文件到大熊猫数据帧乘法除了
df= pd.read_csv(filename, sep=",", header = None, usecols=[0, 1, 2, 3, 4, 5])
这里第一列(索引列或历元日期时间)的所有列100是数据帧
我的初始数据帧的格式:
0 1 2 3 4 5
0 1451606820 1.0862 1.08630 1.08578 1.08578 25
1 1451608800 1.0862 1.08630 1.08578 1.08610 10
2 1451608860 1.0862 1.08620 1.08578 1.08578 16
3 1451610180 1.0862 1.08630 1.08578 1.08578 27
4 1451610480 1.0858 1.08590 1.08560 1.08578 21
5 1451610540 1.0857 1.08578 1.08570 1.08578 2
6 1451610600 1.0857 1.08578 1.08570 1.08578 2
7 1451610720 1.0857 1.08578 1.08570 1.08578 2
8 1451610780 1.0857 1.08578 1.08570 1.08578 2
Column '0' = Datetime in Epoch time
Columns 1,2,3,4,5 are values
我想仅乘以列由100 1,2,3,4,5而不通过100
改变列0或乘以列我试图
df.multiply(100)
但它乘以100包括列0的每一列。
同样在我的列1上,小数点不断被截断为4而不是5像其他列一样。我不知道是什么原因造成,即使在CSV文件中,我有
1451606820 , 1.08622 , 1.08630 , 1.08578 , 1.08578 , 25
1451608800 , 1.08626 , 1.08630 , 1.08578 , 1.08610 , 10
1451608860 , 1.08623 , 1.08620 , 1.08578 , 1.08578 , 16
1451610180 , 1.08627 , 1.08630 , 1.08578 , 1.08578 , 27
1451610480 , 1.08588 , 1.08590 , 1.08560 , 1.08578 , 21
答
您可以从第一列由参数index_col
在read_csv
设置索引,然后多:
df= pd.read_csv(filename, sep=",", header = None, usecols=[0, 1, 2, 3, 4, 5], index_col=0)
然后
df = df.mul(100)
或者:
df = df * 100
另一种解决方案是通过iloc
选择和多个:
df.iloc[:,1:] = df.iloc[:,1:] * 100
df.iloc[:,1:] = df.iloc[:,1:].mul(100)
样品:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
df.iloc[:,1:] = df.iloc[:,1:] * 100
print (df)
A B C D E F
0 1 400 700 100 500 700
1 2 500 800 300 300 400
2 3 600 900 500 600 300