向数据框添加新数据
我有一个包含很多列的csv文件,但为了简单起见,我只用3列来说明问题。这三列的名字分别是'user'、'A'和'B'。我用pandas里的read_csv函数读取了这个文件,数据存储在一个数据框(data frame)里。
现在我想根据某些值来删除这个数据框中的一些行。如果列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)
虽然'data'被正确填充了,但我无法添加新行。最后,数据框df变成了空的。
希望能得到一些帮助。
提前感谢!
1 个回答
1
关于你现在遇到的问题,append()
这个方法并不会直接改变原来的数据表,它会返回一个新的数据表。所以你需要把新的数据表重新赋值给df
,可以这样做:
df = df.append(data,ignore_index=True)
不过,更好的办法是完全避免循环,直接查询你想要的行。比如说:
df = userdata.query('A != "a" and B != "b"')