Получить новый фрейм данных на основе двух фреймов данных со связями - PullRequest
0 голосов
/ 24 марта 2020

Я уверен, что это намного проще, чем я это представляю. В df1 у меня есть список имен столбцов с их расположением. В df2 у меня есть данные для каждого местоположения. Теперь мне нужен новый фрейм данных (df3) с 5 столбцами, с именами столбцов P1-P5, по 10 строк. По сути, df3 будет основан на отношениях «имя» и «местоположение» в df1. В этом случае P2-P3 и P4-P5 будут иметь одинаковые данные в своих столбцах соответственно.

df1 = pd.DataFrame({'Name': ['P1', 'P2', 'P3', 'P4','P5'],
                 'Location': ['Loc1', 'Loc2', 'Loc2', 'Loc3','Loc3']})

df2 = pd.DataFrame({
"Loc1": np.random.rand(10),
"Loc2": np.random.rand(10),
"Loc3": np.random.rand(10),})

print(df1)
print(df2)

Нужно ли объединить их, чтобы это заработало? Я не могу заставить это работать ...

df3 = pd.merge(df1,df2, how='inner').dropna()

1 Ответ

2 голосов
/ 24 марта 2020

Вы можете сделать следующее:

df3=df2[df1.Location]
df3.columns=df1.Name
print(df3)

, который возвращает фрейм данных в запрошенном формате:

Name        P1        P2        P3        P4        P5
0     0.989912  0.294179  0.294179  0.963934  0.963934
1     0.804264  0.477704  0.477704  0.029615  0.029615
2     0.515048  0.641308  0.641308  0.543894  0.543894
3     0.956839  0.490116  0.490116  0.036772  0.036772
4     0.914164  0.681606  0.681606  0.201012  0.201012
5     0.616189  0.211699  0.211699  0.815522  0.815522
6     0.372732  0.132955  0.132955  0.995578  0.995578
7     0.371434  0.278308  0.278308  0.532968  0.532968
8     0.521310  0.101441  0.101441  0.712489  0.712489
9     0.669819  0.970496  0.970496  0.390313  0.390313
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...