[英]Set max string length in pandas
我希望我的數據框自動截斷長度超過特定長度的字符串。
基本上:
pd.set_option('auto_truncate_string_exceeding_this_length', 255)
有任何想法嗎? 我有數百列,不想遍歷每個數據點。 如果這可以在導入期間實現,那也很好(例如 pd.read_csv())
謝謝。
pd.set_option('display.max_colwidth', 255)
我不確定您是否可以在整個 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 中的read_csv
指定為read_csv
那么您可以設置最大長度:
df = pd.read_csv('file.csv', dtype=(np.str, maxlen))
我會嘗試這個並盡快確認
更新
遺憾的是,您無法指定長度,如果您嘗試這樣做,則會引發錯誤:
NotImplementedError: the dtype <U5 is not supported for parsing
嘗試傳遞 arg dtype=(str,5)
您可以使用read_csv 轉換器。 假設你想截斷列名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['A'] = df['A'].str[:255]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.