Python&;Pandas:从数据帧获取数据并创建新数据帧的正确方法
这个问题经常出现,我目前的方法不是最佳方法 例如 我有一个数据帧(df1),其中包含一些数据:Python&;Pandas:从数据帧获取数据并创建新数据帧的正确方法,python,pandas,Python,Pandas,这个问题经常出现,我目前的方法不是最佳方法 例如 我有一个数据帧(df1),其中包含一些数据: date tweet sent_by 2017/01/01 'OMG @user2 @POTUS' user1 2017/01/01 'THIS IS A TWEET!' user17 ...... ..... ...... 我有一个用户列表: user_l
date tweet sent_by
2017/01/01 'OMG @user2 @POTUS' user1
2017/01/01 'THIS IS A TWEET!' user17
...... ..... ......
我有一个用户列表:
user_list = ['user1','user2', ...]
现在,我想通过df1检查推文中是否提到任何用户(不包括发送者),并创建一个包含相关信息的新数据帧(df2)
我目前的方法是:
date_list = []
tweet_list = []
sent_by_list = []
user_mentioned_list = []
for i in range(len(df1)):
for user in user_list:
if user in df1['tweet'][i] and user != df1['sent_by'][i]:
date_list.append(df1['date'][i])
tweet_list.append(df1['tweet'][i])
sent_by_list.append(df1['sent_by'][i])
user_mentioned_list.append(user)
df2 = pd.DataFrame()
df2['date'] = date_list
df2['tweet'] = tweet_list
df2['sent_by'] = sent_by_list
df2['user_mentioned'] = user_mentioned_list
获取数据并形成新数据框的最佳方法是什么?我认为您需要通过列表和|正则表达式(或)
与上一个过滤器进行比较:
详情:
print (df1)
date tweet sent_by user_mentioned
0 2017/01/01 'OMG @user2 @POTUS' user1 user2
1 2017/01/01 'OMG @user2 @POTUS' user2 user2
2 2017/01/01 'OMG @user2 @POTUS' user4 user2
3 2017/01/01 'OMG @user4 @POTUS' user1 NaN
4 2017/01/01 'THIS IS A TWEET!' user17 NaN
print (df1)
date tweet sent_by user_mentioned
0 2017/01/01 'OMG @user2 @POTUS' user1 user2
1 2017/01/01 'OMG @user2 @POTUS' user2 user2
2 2017/01/01 'OMG @user2 @POTUS' user4 user2
3 2017/01/01 'OMG @user4 @POTUS' user1 NaN
4 2017/01/01 'THIS IS A TWEET!' user17 NaN