我正在使用一個 API,并且某些列名對于 mysql 資料庫來說太大了。
如何忽略資料框中的欄位?
我正在嘗試這個:
import pandas as pd
import numpy as np
lst =['Java', 'Python', 'C', 'C ','JavaScript', 'Swift', 'Go']
df = pd.DataFrame(lst)
limit = 7
for column in df.columns:
if (pd.to_numeric(df[column].str.len())) > limit:
df -= df[column]
print (df)
結果:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我的偏好是洗掉比我的資料庫支持的更長的列。
但是我嘗試切片更改名稱,它也不起作用。
我很感激任何幫助
uj5u.com熱心網友回復:
假設以下資料框
>>> df
col1 col2 col3 col4
0 5uqukp g7eLDgm0vrbV Bnssm tRJnSQma6E
1 NDsApz lu02dO ogbRz5 481riI6qne
2 UEfni YV2pCXYFbd pyHYqDH fghpTgItm
3 a0PvRSv 0FwxzFqk jUHQliB W2dBhH
4 BQgTFp FMseKnR ifgt tw1j7Ld
5 1vvF2Hv cwTyt2GtpC4 P039m2 1qR2slCmu
6 JYnABTr oLdZVz KYBspk RgsCsu
要洗掉至少一個值的長度大于 7 個字符的列,請使用:
>>> df.loc[:, df.apply(lambda x: x.str.len().max() <= 7)]
col1 col3
0 5uqukp Bnssm
1 NDsApz ogbRz5
2 UEfni pyHYqDH
3 a0PvRSv jUHQliB
4 BQgTFp ifgt
5 1vvF2Hv P039m2
6 JYnABTr KYBspk
要了解錯誤,請閱讀這篇文章
uj5u.com熱心網友回復:
正如我在評論中提到的那樣,當您這樣做時,df = pd.DataFrame(lst)您是說創建一個具有單列的資料框,其中行由您的單維串列填充。因此,遍歷資料框的列并沒有做任何事情,因為只有一列
話雖如此,這是一個優勢,因為您可以使用基于集合的方法來回答您的問題:
import pandas as pd
import numpy as np
lst =['Java', 'Python', 'C', 'C ','JavaScript', 'Swift', 'Go']
df = pd.DataFrame(lst)
limit = 7
print(df[df[0].str.len() > limit])
這將吐出一個包含單列和單行的資料框,其中包含“Javascript”唯一超過字符長度限制的值。如果您想保持低于限制的值,只需將其更改>為<=.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/431719.html
