这是数据帧的列表。
import pandas as pd
data=[pd.DataFrame([1,2,3],columns=['a']),pd.DataFrame([]),pd.DataFrame([]),
pd.DataFrame([3,4,5,6,7],columns=['a'])]
我正在尝试从上面包含数据帧的列表中删除空数据帧。
这是我尝试过的:
for i in data:
del i.empty()
data
给出:
File "<ipython-input-33-d07b32efe793>", line 2
del i.empty()
^ SyntaxError: cannot delete function call
重要:它还需要将它们存储在data
变量中
答案 0 :(得分:2)
尝试一下:
import pandas as pd
data = [pd.DataFrame([1, 2, 3], columns=['a']), pd.DataFrame([]),
pd.DataFrame([]),
pd.DataFrame([3, 4, 5, 6, 7], columns=['a'])]
for i in range(len(data)-1, 0, -1):
if data[i].empty:
del data[i]
print(data)
您的代码存在问题,即df.empty
返回True或False,而如果i
返回True,则要删除项目i.empty()
。
请注意,为了避免出现列表项out of range
错误,我们在该范围内使用了反向范围。
答案 1 :(得分:0)
我们可以使用filter
data = list(filter(lambda df: not df.empty, data))
或列表理解
data = [df for df in data if not df.empty]
print(data)
[ a
0 1
1 2
2 3, a
0 3
1 4
2 5
3 6
4 7]
答案 2 :(得分:-1)
您可以这样做:
[i for i in data if len(i)>0]
输出:
[ a
0 1
1 2
2 3, a
0 3
1 4
2 5
3 6
4 7]