Напишите функцию, чтобы найти родословную твита - PullRequest
0 голосов
/ 24 марта 2020

У меня есть датафрейм в Python, в котором перечислены группы твитов с их идентификатором, созданным временем и идентификатором твита, с которым каждый из них взаимодействовал. Например, от 006 до 004, 002 указано 999 (999 - это старый твит, который здесь не указан). Таблица отсортирована по времени создания.

+----------+---------------------+-------------+--------------+-----------+
| tweet_id |     created_at      | reply_to_id | retweeted_id | quoted_id |
+----------+---------------------+-------------+--------------+-----------+
|      001 | 2020-02-24 15:51:17 | nan         | 000          | nan       |
|      002 | 2020-02-24 15:52:17 | nan         | nan          | nan       |
|      003 | 2020-02-24 15:53:17 | nan         | nan          | 999       |
|      004 | 2020-02-24 15:54:17 | 001         | nan          | nan       |
|      005 | 2020-02-24 15:55:17 | nan         | nan          | nan       |
|      006 | 2020-02-24 15:56:17 | nan         | 004          | 003       |
|      007 | 2020-02-24 15:57:17 | nan         | nan          | 003       |
|      008 | 2020-02-24 15:58:17 | nan         | nan          | 006       |
|      009 | 2020-02-24 15:59:17 | 006         | nan          | nan       |
|      010 | 2020-02-24 16:00:17 | nan         | 008          | nan       |
+----------+---------------------+-------------+--------------+-----------+

Я пытаюсь написать функцию для поиска истории взаимодействия одного твита. например, 010 ретвитнул 008, 008 цитировал 006, 006 ретвитнул 004, а также цитировал 003, 004 ответил на 001, 003 цитировал 999. Я хотел бы, чтобы эта функция возвращала список твитов, которые отслеживают историю 010.

Другими словами, я хотел бы:

input: '010'
output: ['008', '006', '004', '003', '001', '999']

код для генерации этого игрушечного кадра данных :

df = pd.DataFrame(np.array(
        [['001','2020-02-24 15:51:17',np.nan,'000',np.nan],
        ['002','2020-02-24 15:52:17',np.nan,np.nan,np.nan],
        ['003','2020-02-24 15:53:17',np.nan,np.nan,'999'],
        ['004','2020-02-24 15:54:17',np.nan,np.nan,np.nan],
        ['005','2020-02-24 15:55:17',np.nan,np.nan,np.nan],
        ['006','2020-02-24 15:56:17',np.nan,'004',np.nan],
        ['007','2020-02-24 15:57:17',np.nan,np.nan,'003'],
        ['008','2020-02-24 15:58:17',np.nan,np.nan,'006'],
        ['009','2020-02-24 15:59:17','006',np.nan,np.nan],
        ['010','2020-02-24 16:00:17',np.nan,'008',np.nan]]),
        columns = ['tweet_id', 'created_at', 'reply_to_id', 'retweeted_id', 'quoted_id'])

Полагаю, это может потребовать рекурсивного поиска? Я мог справиться только тогда, когда есть только один тип взаимодействия (если твиты могут отвечать только друг другу. Не уверен, как обращаться, когда 006 взаимодействовал с двумя твитами, и это как бы создает две ветви. Надеюсь получить некоторую помощь от вас ребята!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...