我想讓我的數據框自動截斷比特定長度更長的字符串。在熊貓中設置最大字符串長度
基本上是:
pd.set_option('auto_truncate_string_exceeding_this_length', 255)
任何想法?我有數百列,不想迭代每個數據點。如果這可以在導入期間實現,那也可以(如pd.read_csv())
謝謝。
我想讓我的數據框自動截斷比特定長度更長的字符串。在熊貓中設置最大字符串長度
基本上是:
pd.set_option('auto_truncate_string_exceeding_this_length', 255)
任何想法?我有數百列,不想迭代每個數據點。如果這可以在導入期間實現,那也可以(如pd.read_csv())
謝謝。
你的時候可以使用read_csv converters。比方說,你要截斷列名abc
,你可以傳遞一個字典,功能就像
def auto_truncate(val):
return val[:255]
df = pd.read_csv('file.csv', converters={'abc': auto_truncate}
如果你有列具有不同長度的
df = pd.read_csv('file.csv', converters={'abc': lambda: x: x[:255], 'xyz': lambda: x: x[:512]}
確保列類型爲字符串。列索引也可以用來代替轉換器字典中的名稱。
我不知道,你可以對整個DF做到這一點,下面將加載後的工作:
In [21]:
df = pd.DataFrame({"a":['jasjdhadasd']*5, "b":arange(5)})
df
Out[21]:
a b
0 jasjdhadasd 0
1 jasjdhadasd 1
2 jasjdhadasd 2
3 jasjdhadasd 3
4 jasjdhadasd 4
In [22]:
for col in df:
if is_string_like(df[col]):
df[col] = df[col].str.slice(0,5)
df
Out[22]:
a b
0 jasjd 0
1 jasjd 1
2 jasjd 2
3 jasjd 3
4 jasjd 4
編輯
我認爲,如果你指定的ARGS的dtypes到read_csv
那麼你可以設置最大長度:
df = pd.read_csv('file.csv', dtype=(np.str, maxlen))
我會努力這一點,並確認短期
UPDATE
可悲的是,你不能指定長度,將引發一個錯誤,如果你試試這個:
NotImplementedError: the dtype <U5 is not supported for parsing
試圖通過ARG dtype=(str,5)
可能爲時尚早,但似乎dtype =(np.str,maxlen)對我來說效果不錯。 – bcollins
你怎麼申請這個?在'read_csv'還是'df.col.dtype =(np.str,maxlen)'?在read_csv期間 – EdChum
。通過20M記錄沒有問題。如果這繼續工作,那麼看起來新年將會到來。非常感謝。 – bcollins