как найти другой элемент в той же строке, когда задан элемент массива в кадре данных - PullRequest
1 голос
/ 14 октября 2019

У меня есть набор данных pandas dataframe, он содержит 1000 строк, часть набора данных выглядит следующим образом:

{
"keywords": 
[
"joyride",
"motorway",
"140km/h",
"8-yr-old",
"Germany",
"child",
"police",
"Dortmund",
"lay-by",
"Wednesday",
"parents",
"warning",
"eight-year-old",
"mother",
"automatic",
"Golf",
"Soest",
"Volkswagen",
"high",
"The alarm",
"A44",
"go-karts",
"Volkswagen Golf",
"Berlin",
"IANS",
"triangle",
"bumper cars"
],

"hashtags": 
[
"#ControlledaccessHighway",
"#Germany",
"#RestArea",
"#Dortmund",
"#Berlin",
"#IANS",
"#IndoAsianNewsService",
"#A44Road",
"#Triangle",
"#KartRacing",
"#BumperCars",
"#VolkswagenGolf",
"#SoestGermany",
"#TheAlarm"
],

"label": "200"}
,

{"keywords": 
[
"Eight-year-old",
"140kph",
"parent",
"mother",
"police",
"lay-by",
"child",
"property",
"family",
"cars",
"autobahn",
"warning",
"night",
"late",
"87mph",
"eight-year-old",
"motorway",
"joyride",
"German",
"minutes",
"dash",
"Soest",
"journalism",
"private property",
"Facebook",
"A44",
"go-karts",
"Dortmund",
"VW Golf",
"free-thinking",
"Germany",
"triangle",
"bumper cars"
],

"hashtags": 
[
"#A44Road",
"#Autobahn",
"#RestArea",
"#Germany",
"#ControlledaccessHighway",
"#VolkswagenGolf",
"#SoestGermany",
"#Dortmund",
"#Triangle",
"#Facebook",
"#PrivateProperty",
"#BumperCars",
"#KartRacing",
"#Freethought",
"#Journalism"
], 

"label": "200"
}
}

Учитывая переменную массива, так называемую "temp", которая совпадает с одной изэлементы в столбце «хэштеги», я пытался найти несколько методов, чтобы найти его элемент «метка», например:

label = df.loc[df['hashtags'] == temp, "label" ].iloc[0]
print(label)

Всегда возвращает ошибку:

ValueError: Arrays were different lengths: 1000 vs 21

НоКогда я использую «метку» (которая является числом), чтобы найти другие столбцы, он не возвращает ошибку. Как я могу исправить эту проблему, если я хочу продолжать использовать «хэштег» в качестве ввода?

1 Ответ

0 голосов
/ 14 октября 2019

IIUC и ваш фрейм данных выглядит как

df 
                                        keywords  ... label
0  [joyride, motorway, 140km/h, 8-yr-old, Germany...  ...   200
1  [Eight-year-old, 140kph, parent, mother, polic...  ...   200

Пример:

temp = '#Berlin'

Вы можете получить индексы того, где находится температура, с помощью

df.hashtags.apply(lambda v: temp in v)

# 0     True
# 1    False
# Name: hashtags, dtype: bool

следовательно, соответствующие метки

df.label.loc[df.hashtags.apply(lambda v: temp in v)]

# 0    200
# Name: label, dtype: object

или для нескольких временных значений:

for temp in ['#Berlin', '#BumperCars', '#Journalism']:
    print(temp, '\n', df.label.loc[df.hashtags.apply(lambda v: temp in v)], '\n')

#Berlin 
# 0    200
# Name: label, dtype: object 

#BumperCars 
# 0    200
# 1    200
# Name: label, dtype: object 

#Journalism 
# 1    200
# Name: label, dtype: object 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...