【发布时间】:2018-10-23 01:32:50
【问题描述】:
我是编码新手,对于一个项目,我需要使用 pandas 在 csv 文件中选择值并计算这些值。我想要的是选择两列和多行来计算它们,例如,将一列乘以另一列。我成功地选择了值但没有计算它们,这就是我所拥有的。
import pandas as pd`
data = pd.read_csv("csvfilet.csv", delimiter=";", decimal=",")
print(data.iloc[57:67, 3])
print(data.iloc[57:67, 7])
data.iloc[57:68, 3] = data.iloc[57:68, 3]*data.iloc[57:68, 7]
print(data.iloc[57:68, 3])
它首先用 data.iloc() 正确打印我想要的两列,但似乎我不能这样做它向我显示:
不能将序列乘以“str”类型的非整数 所以我尝试了这个:
import pandas as pd
data = pd.read_csv("csvfilet.csv", delimiter=";", decimal=",")
print(data.iloc[57:67, 3])
print(data.iloc[57:67, 7])
x=data.iloc[57:68, 7:8]
y=data.iloc[57:68, 3:4]
z=x*y
print(z)
它给了我用 NaN 替换值的两列。 有没有办法直接在 csv 文件中计算我们选择的值(按行和列)?
*编辑:我需要提取值的 csv 文件如下所示:
[Name];[Switching (us)];[Memory (byte)];;;;;;;;;
S1;20,5;;;;;;;;;;
S3;;256;;;;;;;;;
[Name];[Priority];[ArrivalType];[MinDistance (ms)];[MaxDistance (ms)];[SizeType];[Min Size (byte)];[MaxSize (byte)];[BurstSize];[Sender];[Receiver];[Latency (ms)]
FL_1;1;Periodic;5;;ETHERNET_FRAME_SIZE;;100;;Node4;Node6;2
FL_2;1;Periodic;2;;ETHERNET_FRAME_SIZE;;20;;Node3;Node4;1,5
例如,我需要选择 FL_1 右侧的“5”,并将其乘以同一行的“100”。
【问题讨论】:
-
只需将它们转换为数字..
-
可以添加列类型列表吗?添加
data.dtypes的输出 -
在第一次尝试中,我不明白 - 你真的想用第 3 列 * 第 7 列替换第 3 列吗? data[z] = data[x] * data[y] 是你要找的,我相信。
-
是的,我尝试将第 3 列替换为第 3 列 * 第 7 列,感谢您的回答,将对其进行测试。