Python 使用 pandas 和 str.strip 崩溃 [英] Python crashes using pandas and str.strip
问题描述
这个最少的代码使我的 Python 崩溃.(设置:pandas 0.13.0,python 2.7.3 AMD64,Win7.)
This minimal code crashes my Python. (Setting: pandas 0.13.0, python 2.7.3 AMD64, Win7.)
import pandas as pd
input_file = r"c3.csv"
input_df = pd.read_csv(input_file)
for col in input_df.columns: # strip whitespaces from string values
if input_df[col].dtype == object:
input_df[col] = input_df[col].apply(lambda x: x.strip())
print 'start'
for idx in range(len(input_df)):
input_df['LL'].iloc[idx] = 3
print idx
print 'finished'
输出:
start
0
Process finished with exit code -1073741819
什么防止崩溃:
- 从 c3.csv 中删除行.
- 从代码中删除
.strip()
. - 更改 c3.csv 会更改
for
迭代的数量,直到以意想不到的方式崩溃.
- Removing lines from c3.csv.
- Removing
.strip()
from the code. - Changing c3.csv changes the amount of
for
iterations until the crash in unexpected ways.
c3.csv 的内容:
Contents of c3.csv:
Size , B/S , Symbol , Type , BN , Duration , VR , Time , SR ,LL,
0, xxxx , xxxx0 , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
00, xxxx , xxxxx , ,, xxx , 00000 , 00:00:00 , 000000000 , 00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
0, xxxx , xxxxx , ,, xxx , 00000 , 00-00:00:00 , 000000000 , 00-00:00:00 ,
推荐答案
您正在执行一个可能以意想不到的方式运行的链式分配.见这里:http://pandas.pydata.org/pandas-docs/dev/indexing.html#indexing-view-versus-copy.这已在 master 中修复,并将在 0.13.1(即将推出)中起作用.见这里:https://github.com/pydata/pandas/pull/6031
You are doing a chained assignment which can behave in unexpected ways. see here: http://pandas.pydata.org/pandas-docs/dev/indexing.html#indexing-view-versus-copy. This is fixed in master and will work in 0.13.1 (coming soon). see here: https://github.com/pydata/pandas/pull/6031
这样做是不正确的:
input_df['LL'].iloc[idx] = 3
改为:
input_df.ix[ix,'LL'] = 3
甚至更好(因为您将所有行分配给 3)
Or even better (as you are assigning ALL rows to 3)
input_df['LL'] = 3
如果你只分配了一些行(并说一个整数/布尔索引器)
If you are assigning just some of the rows (and have say an integer/boolean indexer)
input_df.ix[indexer,'LL'] = 3
您也应该这样做以去除空格:
You should also just do this to strip the whitespace:
input_df[col] = input_df[col].str.strip()
这篇关于Python 使用 pandas 和 str.strip 崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!