将新数据附加到数据框

时间:2014-08-15 17:39:31

标签: python pandas

我有一个包含许多列的csv文件,但为了简单起见,我只使用3列来解释问题。列名是' user',' A'和' B'。我已经使用pandas中的read_csv函数读取了该文件。数据存储为数据框。

现在我想根据它们的值删除此数据框中的某些行。因此,如果A列中的值不等于a而B列不等于b,我想跳过这些用户行。

问题是我想动态创建一个数据帧,我可以一次追加一行。另外我不知道会有多少行。因此,我无法在定义数据帧时指定索引。

我使用以下代码:

import pandas as pd

header=['user','A','B']
userdata=pd.read_csv('.../path/to/file.csv',sep='\t', usecols=header);

df = pd.DataFrame(columns=header)

for index, row in userdata.iterrows():
       if row['A']!='a' and row['B']!='b':
       data= {'user' : row['user'], 'A' : row['A'], 'B' : row['B']}
       df.append(data,ignore_index=True)

'数据'正在填充,但我无法追加。最后,df变空了。

任何帮助都将不胜感激。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

关于您的直接问题,append()不会修改DataFrame;它返回一个新的。因此,您必须通过以下方式重新分配df

df = df.append(data,ignore_index=True)

但更好的解决方案是完全避免迭代,只需查询所需的行。例如:

df = userdata.query('A != "a" and B != "b"')