我已将csv文件读入pandas数据帧
df= pd.read_csv(filename, sep=",", header = None, usecols=[0, 1, 2, 3, 4, 5])
这是dataframe的格式
我最初的Dataframe:
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
我想只将第1,2,3,4,5列乘以100而不更改第0列或将第0列乘以100
我试过
df.multiply(100)
但它将每列乘以100,包括第0列。
同样在我的第1列上,小数点不断被截断为4而不是像其他列一样被截断。即使在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
答案 0 :(得分:2)
您可以在read_csv
中按参数index_col
从第一列设置索引,然后设置多个:
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