向数据框添加新数据

2 投票
1 回答
2776 浏览
提问于 2025-04-18 17:26

我有一个包含很多列的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"')

撰写回答