有人能解释这三种切片方法有何不同?
我已经看过这些文档了,我已经看到了这些 答案,但我仍然发现自己无法解释三者是如何不同的.对我来说,它们在很大程度上似乎是可以互换的,因为它们处于较低的切片水平.
例如,假设我们想获得a的前五行DataFrame
.这三个都是如何运作的?
df.loc[:5]
df.ix[:5]
df.iloc[:5]
Run Code Online (Sandbox Code Playgroud)
有人可以提出三种情况,其中使用的区别更清晰吗?
我查了一下这篇文章:在pandas中的数据框中查找非数字行? 但它并没有真正回答我的问题.
我的样本数据:
import pandas as pd
d = {
'unit': ['UD', 'UD', 'UD', 'UD', 'UD','UD'],
'N-D': [ 'Q1', 'Q2', 'Q3', 'Q4','Q5','Q6'],
'num' : [ -1.48, 1.7, -6.18, 0.25, 'sum(d)', 0.25]
}
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
N-D num unit
0 Q1 -1.48 UD
1 Q2 1.70 UD
2 Q3 -6.18 UD
3 Q4 0.25 UD
4 Q5 sum(d) UD
5 Q6 0.25 UD
Run Code Online (Sandbox Code Playgroud)
我想只筛选出'num'列中非NON-NUMERIC的行.我希望所有列只用于包含列'num'的非数字值的行.
期望的输出:
N-D num unit
4 Q5 sum(d) UD
Run Code Online (Sandbox Code Playgroud)
我的尝试:
nonnumeric=df[~df.applymap(np.isreal).all(1)] #didn't work, it pulled out …
Run Code Online (Sandbox Code Playgroud) 我对熊猫很新(即不到2天).但是,我似乎无法找出将两列与if/else条件组合的正确语法.
实际上,我确实找到了一种使用'zip'来实现它的方法.这就是我想要实现的目标,但似乎可能有更有效的方法在熊猫中做到这一点.
为了完整起见,我提供了一些预处理,以便清楚地说明:
records_data = pd.read_csv(open('records.csv'))
## pull out a year from column using a regex
source_years = records_data['source'].map(extract_year_from_source)
## this is what I want to do more efficiently (if its possible)
records_data['year'] = [s if s else y for (s,y) in zip(source_years, records_data['year'])]
Run Code Online (Sandbox Code Playgroud) 我有一个Pandas DataFrame
它有11列,但我想将DataFrame从第1列而不是第0列拆分到第10列.我可以通过更复杂的方法实现它,而不是Pandas
自己提供的方法.如何使用DataFrame
支持的方法来完成Pandas
?
数据是595行乘11列,我想得到:
>>> import numpy as np
>>> import pandas as pd
>>> train_data = pd.DataFrame(my_data, columns=my_columns)
>>> train_data
stockid prich_m1 prich_m3 prich_m6 \
1 000002.SZ 1.55755700445 0.861009772647 5.42726384781
2 000009.SZ 3.00223270244e-07 4.8010096027 4.46164511978
.. ... ... ... ...
.. ... ... ... ...
594 603699.SH 0.0491892903353 0.934596516371 0.0196757161342
595 603993.SH 0.83105321611 0.771692272102 2.02816558693
rsi mkt_cap held_by_ins found_own \
1 0.650879566982 153108876954.0 42.6353598479 14.9550575226
2 0.462085308057 19492802690.5 25.8866394448 5.31468116104
.. ... …
Run Code Online (Sandbox Code Playgroud)