gpt4 book ai didi

python - 如何在 pandas 数据框的子集中搜索出现值的行

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:17 27 4
gpt4 key购买 nike

我有两个dataframes,例如

import pandas as pd
import numpy as np
from random import shuffle

df_data = pd.DataFrame(data=np.random.randint(low=0, high=10, size=(10,3)), columns=['A', 'B', 'C'])
keys = np.arange(0, 10)
shuffle(keys)
df_data['keys'] = keys

key_data = pd.DataFrame(data=np.reshape(np.arange(1,10), (3,3)), columns=['Key_col1', 'Key_col2', 'Key_col3'])
key_data['Timestamp'], key_data['Info'] = ['Mon', 'Wed', 'Fri'], [13, 2, 47]

返回的是这样的:

    A   B   C   keys
0 3 9 2 5
1 7 9 4 7
2 9 6 6 0
3 9 9 0 9
4 8 5 8 6
5 2 5 7 3
6 5 1 2 4
7 3 9 6 2
8 4 2 3 8
9 6 5 5 1

还有这个:

    Key_col1    Key_col2    Key_col3    Timestamp   Info
0 1 2 3 Mon 13
1 4 5 6 Wed 2
2 7 8 9 Fri 47

我想使用第一个数据框中的“keys”列来搜索第二个数据框中的唯一键列(即Key_col1 Key_col2, Key_col3)(因为“信息”列可能包含那么多键的值)。

然后,我会将列 TimestampInfo 添加到匹配 key 的行。

第 0 行的预期输出是这样的:

    A   B   C  keys  Timestamp  Info
0 3 9 2 5 Wed 2

我的方法是首先将我的 key_df 的一个子集作为一个值:

key_data.iloc[:, 0:3] == 2

OUT
Key_col1 Key_col2 Key_col3
0 False True False
1 False False False
2 False False False

在下一步中,我尝试使用 df.loc 仅返回出现值 True 的行

key_data.loc[:, key_data.iloc[:, 0:3] == 2]

但这会导致错误 ValueError: Cannot index with multidimensional key

有人可以帮我返回出现值 True 的行,以便我可以使用此索引来选择在何处追加我的数据吗?

谢谢

编辑:键是唯一的,并且所有键都恰好出现在 3 个键列中的 1 个中。

最佳答案

这对你有用,只需重命名列:

new_df = pd.merge(df_data, key_data, how= 'right', left_on=['keys','keys','keys'], right_on = ['Key_col1','Key_col2','Key_col3'])

new_df =new_df.dropna(axis=1, how='all')

关于python - 如何在 pandas 数据框的子集中搜索出现值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52745318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com