Python 如何从数据帧中删除特定列

Python 如何从数据帧中删除特定列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,它有以下属性; id、文本、创建时间、转发次数、收藏次数、源、用户id 我想通过弹出以“RT”开头的df.text行来获得一个新的数据帧 但我得到以下关键错误: KeyError Traceback (most recent call last) /home/bd/anaconda3/lib/python3.5/site-packages/pandas/indexes /base.py in get_loc(se

我有一个数据帧,它有以下属性; id、文本、创建时间、转发次数、收藏次数、源、用户id

我想通过弹出以“RT”开头的df.text行来获得一个新的数据帧

但我得到以下关键错误:

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
键错误
回溯(最近一次呼叫最后一次)
/home/bd/anaconda3/lib/python3.5/site-packages/pandas/index
/get_loc中的base.py(自身、键、方法、公差)
1944年尝试:
->1945返回自我。发动机。获取位置(钥匙)
1946除了键错误:
.
.
.
在处理上述异常期间,发生了另一个异常:
KeyError回溯(最近一次呼叫最后一次)
在()
5通
6其他:
---->7非转发列表。追加(df[i])
.
.
.
关键错误:0
我怎样才能修好它

您需要使用以下面具:

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])

可能是索引错误。共享一点数据帧。另外,当您执行
type(df.index[0])
时,您会得到什么?另外,将
df.text
更改为
df['text']
请参见:
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])