我刚刚将我的Pandas从0.11升级到0.13.0rc1.现在,该应用程序正在弹出许多新的警告.其中一个是这样的:
E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Run Code Online (Sandbox Code Playgroud)
我想知道究竟是什么意思?我需要改变什么吗?
如果我坚持使用,我应该如何暂停警告quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
?
def _decode_stock_quote(list_of_150_stk_str):
"""decode the webpage and return dataframe"""
from cStringIO import StringIO
str_of_all = "".join(list_of_150_stk_str)
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) #dtype={'A': object, 'B': object, 'C': np.float64}
quote_df.rename(columns={'A':'STK', 'B':'TOpen', 'C':'TPCLOSE', 'D':'TPrice', 'E':'THigh', 'F':'TLow', 'I':'TVol', 'J':'TAmt', 'e':'TDate', 'f':'TTime'}, inplace=True)
quote_df = quote_df.ix[:,[0,3,2,1,4,5,8,9,30,31]]
quote_df['TClose'] = quote_df['TPrice']
quote_df['RT'] …
Run Code Online (Sandbox Code Playgroud) 我正在将CSV文件读入DataFrame.我需要从所有类似字符串的单元格中删除空格,而在Python 2.7中保留其他单元格不变.
这是我正在做的事情:
def remove_whitespace( x ):
if isinstance( x, basestring ):
return x.strip()
else:
return x
my_data = my_data.applymap( remove_whitespace )
Run Code Online (Sandbox Code Playgroud)
Pandas有没有比这更好或更惯用的方法呢?
是否有更有效的方式(也许是通过列方式做事)?
我试过寻找一个明确的答案,但是关于这个主题的大多数问题似乎是如何从列名本身中去除空格,或者假设单元格都是字符串.
我有一个熊猫数据框(NROWS x 1),其中每一行都是一个列表,例如
y
0 [[aa, bb], 0000001]
1 [[uz, mk], 0000011]
Run Code Online (Sandbox Code Playgroud)
我想展平列表并分成(在这种情况下为三)列,如下所示:
1 2 3
0 aa bb 0000001
1 uz mk 0000011
Run Code Online (Sandbox Code Playgroud)
此外,不同的行具有不相等的长度:
y
0 [[aa, bb], 0000001]
1 [[mk], 0000011]
Run Code Online (Sandbox Code Playgroud)
我真正想要结束的是,检测所有行的最大长度,并将其余行填充为空字符串”。在这个例子中
1 2 3
0 aa bb 0000001
1 '' mk 0000011
Run Code Online (Sandbox Code Playgroud)
我一直在玩.values.tolist(),但是它并不能满足我的需要。
编辑- 以下答案非常简洁,非常感谢。我正在编辑,以包括一个解决方案,用于解决类似但更简单的问题,以确保完整性。
读取数据,使用Strip的trim()fn /修剪数据帧的所有字符串,以确保没有左/右空格
df = pd.read_csv('data.csv',sep=',',dtype=str)
df = trim_all_columns(df)
Run Code Online (Sandbox Code Playgroud)
保留分类/名义ID和CODE列,删除所有不适用
df.dropna(subset=['dg_cd'] , inplace=True) # drop dg_cd is NaN rows from df
df2 = df[['id','dg_cd']]
Run Code Online (Sandbox Code Playgroud)
通过ID将CODE变成句子,并保留所有重复的实例
x = df2.groupby('id').apply(lambda x: x['dg_cd'].values.tolist()).apply(pd.Series).replace(np.nan, …
Run Code Online (Sandbox Code Playgroud) I have a df as follows:
CHROM POS SRR4216489 SRR4216675 SRR4216480
0 1 127536 ./. ./. ./.
1 1 127573 ./. 0/1:0,5:5:0:112,1,10 ./.
2 1 135032 ./. 1/1:13,0:13:3240:0,30,361 0/0:13,0:13:3240:0,30,361
3 1 135208 ./. 0/0:5,0:5:3240:0,20,160 0/1:5,0:5:3240:0,20,160
4 1 138558 1/1:5,0:5:3240:0,29,177 0/0:0,5:5:0:112,1,10 ./.
Run Code Online (Sandbox Code Playgroud)
I would like to replace the contents of the sample columns depending on certain conditions. The sample columns are SRR4216489, SRR4216675, SRR4216480. I am looking to replace './.' with 0.5, anything with 0/0 at the start with 0.0 and …