【发布时间】:2018-04-21 20:29:02
【问题描述】:
这里有一个例子说明为什么 pandas 是一个非常设计的组合库:
import pandas as pd
df = pd.DataFrame()
df['A'] = [1,2,3]
df['B'] = [4,5,6]
print(df)
df1 = df[df.A.apply(lambda x:x == 4)]
df2 = df1[df1.B.apply(lambda x:x == 1)]
print(df2)
这将打印出来
df
A B
0 1 4
1 2 5
2 3 6
df2
Empty DataFrame
Columns: []
Index: []
注意Columns: [] 的方式,这意味着在df2 上的任何进一步/选择都将失败。这是一个大问题,因为这意味着我现在必须始终在尝试从中选择之前检查任何表是否为空,这是一种垃圾行为。
为了清楚起见,明智的、深思熟虑的、合理的、不完全破坏的行为是保留列。
有人愿意提供一些我可以在数据帧 API 的 hack 集合之上应用的 hack 吗?
【问题讨论】:
-
我希望
Columns: [A, B]在输出中。我知道在这种特殊情况下我可以做df.A == 4,但并不是所有的应用调用都可以这样替换,所以这没有提供答案。