簡體   English   中英

如何從數據框中刪除特定列

[英]how to remove a specific column from a dataframe

我有一個數據框,它有以下屬性; id,text,created_at,retweet_count,favorite_count,source,user_id

我想通過彈出以“RT”開頭的df.text行來獲取新的數據幀。

non_retweeted_list = []

for i in range(len(df)):
    if (df.text[i][0] and df.text[i][1]) == ('R' and 'T'):
        pass
    else:
        non_retweeted_list.append(df[i])

但我得到KeyError以下:

KeyError                                  
Traceback (most recent call last)
/home/bd/anaconda3/lib/python3.5/site-packages/pandas/indexes
/base.py in get_loc(self, key, method, tolerance)
1944  try:
-> 1945                 return self._engine.get_loc(key)
1946             except KeyError:

.
.
.
During handling of the above exception, another exception occurred:
KeyError                               Traceback (most recent call last)
<ipython-input-3-5dfc6d77a22c> in <module>()
  5         pass
  6     else: 
 ----> 7         non_retweeted_list.append(df[i])
 .
 .
 .
 KeyError: 0

我該如何解決?

你需要boolean indexingstartswith for mask:

df = pd.DataFrame({'text':['RT apple','dog','RT baladiska']})
print (df)
           text
0      RT apple
1           dog
2  RT baladiska

mask = df['text'].str.startswith('RT')
print (mask)
0     True
1    False
2     True
Name: text, dtype: bool

#filter out columns start with RT
df1 = df[~mask]
print (df1)
  text
1  dog

#filter values starting RT
df2 = df[mask]
print (df2)
           text
0      RT apple
2  RT baladiska

或者:

mask = df['text'].str.contains('^RT')

可能是您引用索引的方式。 此外,這是檢查前兩個字符的奇怪方法。 你為什么這樣做? 您如何看待我在下面展示的方式?

non_retweeted_list = []
for i in range(len(df)):
    if 'RT' == df['text'][df.index==i][0:2]:
        pass
    else:
        non_retweeted_list.append(df[df.index[i]])

最后,做一個if-pass語句可能不是一個好主意。 改為使用否定

non_retweeted_list = []
for i in range(len(df)):
    if 'RT' != df['text'][df.index==i][0:2]:
        non_retweeted_list.append(df[df.index==i])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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