我有以下DataFrame:
daysago line_race rating rw wrating
line_date
2007-03-31 62 11 56 1.000000 56.000000
2007-03-10 83 11 67 1.000000 67.000000
2007-02-10 111 9 66 1.000000 66.000000
2007-01-13 139 10 83 0.880678 73.096278
2006-12-23 160 10 88 0.793033 69.786942
2006-11-09 204 9 52 0.636655 33.106077
2006-10-22 222 8 66 0.581946 38.408408
2006-09-29 245 9 70 0.518825 36.317752
2006-09-16 258 11 68 0.486226 33.063381
2006-08-30 275 8 72 0.446667 32.160051
2006-02-11 475 5 65 0.164591 10.698423
2006-01-13 504 0 70 0.142409 9.968634
2006-01-02 …Run Code Online (Sandbox Code Playgroud) 我有一个场景,用户想要将几个过滤器应用于Pandas DataFrame或Series对象.本质上,我想有效地将一堆过滤(比较操作)链接在一起,这些过滤由用户在运行时指定.
过滤器应该是添加剂(也就是应用的每个应该是狭窄的结果).
我目前正在使用,reindex()但每次创建一个新对象并复制基础数据(如果我正确理解文档).因此,在过滤大型系列或DataFrame时,这可能非常低效.
我认为使用apply(),map()或类似的东西可能会更好.我对Pandas很陌生,尽管如此仍然试图将我的头脑包裹起来.
我想获取以下表单的字典,并将每个操作应用于给定的Series对象并返回"已过滤"的Series对象.
relops = {'>=': [1], '<=': [1]}
Run Code Online (Sandbox Code Playgroud)
我将从一个当前的例子开始,只是过滤一个Series对象.以下是我目前使用的功能:
def apply_relops(series, relops):
"""
Pass dictionary of relational operators to perform on given series object
"""
for op, vals in relops.iteritems():
op_func = ops[op]
for val in vals:
filtered = op_func(series, val)
series = series.reindex(series[filtered])
return series
Run Code Online (Sandbox Code Playgroud)
用户提供包含他们想要执行的操作的字典:
>>> df = pandas.DataFrame({'col1': [0, 1, 2], 'col2': [10, 11, 12]})
>>> print df
>>> print df
col1 col2
0 …Run Code Online (Sandbox Code Playgroud) 我正在hdf = pandas.HDFStore('Survey.h5')通过pandas包处理从h5文件加载的调查数据.在此范围内DataFrame,所有行都是单个调查的结果,而列是单个调查中所有问题的答案.
我的目标是将此数据集缩小到一个较小的数据集,DataFrame仅包括某个问题上具有特定描述答案的行,即此列中的所有相同值.我能够确定具有此条件的所有行的索引值,但我找不到如何删除此行或仅使用这些行创建新的df.
我有像这样的熊猫数据框
df = pd.DataFrame(data=[[21, 1],[32, -4],[-4, 14],[3, 17],[-7,NaN]], columns=['a', 'b'])
df
Run Code Online (Sandbox Code Playgroud)
我希望能够删除列列表中具有负值的所有行,并保留具有NaN的行.
在我的例子中只有2列,但我的数据集中有更多,所以我不能一个接一个地做.
我想在特定列中删除零值的行
>>> df
salary age gender
0 10000 23 1
1 15000 34 0
2 23000 21 1
3 0 20 0
4 28500 0 1
5 35000 37 1
Run Code Online (Sandbox Code Playgroud)
工资和年龄列中的一些数据缺失,第三列,性别是一个二元变量,1 表示男性 0 表示女性。这里的 0 不是缺失的数据,我想删除工资或年龄中的行,这样我就可以得到
>>> df
salary age gender
0 10000 23 1
1 15000 34 0
2 23000 21 1
3 35000 37 1
Run Code Online (Sandbox Code Playgroud) 我有一个每天都会邮寄给我的 csv 文件,我想编写一个脚本来清理数据,然后再将其推送到数据库中。csv 文件的底部有 2 个空行(图像中的第 73 行和第 74 行)和两行中包含一些垃圾数据(图像中的第 75 行和 76 行),我需要删除这些行。
要识别第一个空行,了解 A 列在第一个空行(图像中的第 73 行)之前始终包含数据可能会有所帮助。
你能帮我弄清楚如何识别这些行并删除其中的数据吗?