簡體   English   中英

在熊貓中設置最大字符串長度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM