2017-10-21 31 views
0

让我们假设我在CSV文件中有一个很大的数据:如何使用python更新基于同一csv文件bys中的其他列单元格的列单元格中的值?

frame.number frame.len frame.cap_len frame.Type 
    1    100   100   ICMP 
    2    64   64   UDP 
    3    100   100   ICMP 
    4    87   64   ICMP 

我想改变基于其长度的帧的类型。 第一个问题是,我不知道如何提取列的排名,然后更改typelike此框架:

if frame.len==100 then it puts frame.type=ICMP_tt else if frame.len==87 then it puts frame.type=ICMP_nn 

我想,它看起来像这样:

frame.number frame.len frame.cap_len frame.Type 
    1    100   100   ICMP_tt 
    2    64   64   UDP 
    3    100   100   ICMP_tt 
    4    87   64   ICMP_nn 

我尝试使用这段代码,但没有做任何修改。

import pandas 

df = pandas.read_csv('Test.csv') 
if df['frame.len'] == 100: 
    df['frame.type'].replace("ICMP_tt") 

如果你能帮助我,我将不胜感激。

回答

0

类似的问题:How to conditionally update DataFrame column in Pandas

import pandas 
df = pandas.read_csv('Test.csv') 
df.loc[df['frame.len'] == 100, 'frame.Type'] = "ICMP_tt" 
df.loc[df['frame.len'] == 87, 'frame.Type'] = "ICMP_nn" 
df 

结果: enter image description here

应该做的伎俩。给df.loc[]的第一项是一个真/假值的数组,告诉它哪些行要更新(如果我正确记得,它也会接受单个数字作为行索引),第二项指定更新哪一列。

+0

但我没有任何修改,这是我的问题。 – tierrytestu

+0

你介意给我一个csv还是一个泡菜?泡菜会更好。通过发送我的意思是像在谷歌驱动器上分享它... – DragonBobZ

+0

这是一个很大的文件,我尝试用这些线集测试。你认为我需要将结果保存在新文件中吗? – tierrytestu

相关问题