Так у меня есть некоторые данные, такие как:crossreferencing панды dataframe в
a.csv:
id, ..., name
1234, ..., R
1235, ..., Python
1236, ..., Panda
... etc
b.csv:
id, ..., amount
1234, ..., 1
1234, ..., 1
1234, ..., 2
...
1236, ..., 1
1236, ..., 1
Я пытаюсь перекрестные ссылки идентификаторы между a.csv и b.csv для того, чтобы добавить столбец количество моей панд dataframe для a.csv. Эта величина является «суммой сумм в b.csv для идентификатора соответствия этой строки».
Я пытаюсь использовать функцию применять следующим образом:
import pandas as pd
def itemcounts(row):
# ok this works?
# return b[b['id'] == 1234]['amount'].sum()
# each a['quantity'] gets set to 4 or whatever the sum for 1234 is.
# and this does?
# return row['id']
# a['quantity'] get set to whatever row's 'id' is.
# but this doesn't
id = row['id']
return b[b['id'] == id]['amount'].sum()
# a['quantity'] is 0.
a = pd.read_csv('a.csv')
b = pd.read_csv('b.csv')
a['quantity'] = a.apply(itemcounts, axis=1)
Однако, как отмечалось в комментариях я не могу применить, чтобы найти подходящие строки в b
получить сумму. Я ожидаю, что у меня отсутствует что-то фундаментальное для python или pandas.
Я пробовал придать row['id']
int в itemcounts, но это все еще не сработало для меня.
ли она использовать 'apply'? У меня есть решение, которого нет. –
Благодарим вас за помощь. Оказывается, я был жертвой грязных данных. Оба файла были около 1000 строк, но идентификаторы на самом деле не выровнялись для всех случаев. –