相对于其他数据框的bin值,从数据框中提取行(不使用列名)

沙申克·辛格·亚达夫(Shashank Singh Yadav)

我正在使用3个数据帧,其中2个数据帧包含根据其所属范围(在单独的列中)分配给列数据的附加bin号。

df_1

5 6

8 1

6 7

4 9

1 3

9 2

2 5

df_2

A B A_bin B_bin

5 6 2 2

8 1 1 1

6 7 3 2

4 9 3 3

1 3 1 1

9 2 1 1

2 5 2 2

df_3

A B C D A_bin B_bin C_bin D_bin

5 6 2 6 2 2 1 2

8 1 6 4 1 1 2 2    

6 7 3 1 3 2 1 1    

4 9 1 9 3 3 1 3    

1 3 8 7 1 1 3 3    

9 2 4 8 1 1 2 3    

2 5 9 2 2 2 3 1

df_1仅包含两列,df_2具有附加列,该列包含根据所属范围分配给列A和B的bin,类似地,df_3包含具有值的列,而附加列已分配了bin号。

我想从df_3中提取行,以使其仅提取在单独的数据帧中df_2列的每个列分别具有bin值“ 2”的数据。

我面临的主要问题是在代码中任何地方都没有提及列名的情况下做到这一点

预期产量

df_output_1(其中df_2中列“ A”的bin值为2)

A B C D  

5 6 2 6

2 5 9 2

df_output_2(其中df_2中列“ B”的bin值为2)

A B C D  

5 6 2 6

6 7 3 1

2 5 9 2

弗朗西斯亲王

使用合并(右或左),我们可以过滤数据名声。

    for bin_name in (column_name + "_bin" for column_name in df_1_columns):
      print(bin_name)
      df_3_joined = pd.merge(df_3[df_3_op_columns], df_2[df_2[bin_name] == 2][df_1_columns], how='right', on=df_1_columns, suffixes=['_l', ''])
      print(df_3_joined)

完整的例子是

import pandas as pd

df_1 = pd.DataFrame(columns = ['A', 'B'])
df_1.loc[len(df_1)] = [5,6]
df_1.loc[len(df_1)] = [8, 1]
df_1.loc[len(df_1)] = [6, 7]
df_1.loc[len(df_1)] = [4, 9]
df_1.loc[len(df_1)] = [1, 3]
df_1.loc[len(df_1)] = [9, 2]
df_1.loc[len(df_1)] = [2, 5]

df_2 = pd.DataFrame(columns = ['A', 'B', 'A_bin', 'B_bin'])
df_2.loc[len(df_2)] = [5, 6, 2, 2]
df_2.loc[len(df_2)] = [8, 1, 1, 1]
df_2.loc[len(df_2)] = [6, 7, 3, 2]
df_2.loc[len(df_2)] = [4, 9, 3, 3]
df_2.loc[len(df_2)] = [1, 3, 1, 1]
df_2.loc[len(df_2)] = [9, 2, 1, 1]
df_2.loc[len(df_2)] = [2, 5, 2, 2]

df_3 = pd.DataFrame(columns = ['A', 'B', 'C', 'D', 'A_bin', 'B_bin', 'C_bin', 'D_bin'])
df_3.loc[len(df_3)] = [5, 6, 2, 6, 2, 2, 1, 2]
df_3.loc[len(df_3)] = [8, 1, 6, 4, 1, 1, 2, 2]
df_3.loc[len(df_3)] = [6, 7, 3, 1, 3, 2, 1, 1]
df_3.loc[len(df_3)] = [4, 9, 1, 9, 3, 3, 1, 3]
df_3.loc[len(df_3)] = [1, 3, 8, 7, 1, 1, 3, 3]
df_3.loc[len(df_3)] = [9, 2, 4, 8, 1, 1, 2, 3]
df_3.loc[len(df_3)] = [2, 5, 9, 2, 2, 2, 3, 1]

results = {}
df_1_columns = list(df_1.columns)
df_3_op_columns = [cname for cname in list(df_3.columns) if not cname.endswith("_bin")]
for bin_name in (column_name + "_bin" for column_name in df_1_columns):
    df_3_joined = pd.merge(df_3[df_3_op_columns], df_2[df_2[bin_name] == 2][df_1_columns], how='right', on=df_1_columns)
    results[bin_name] = df_3_joined

for binName, result in results.iteritems():
    print(binName)
    print(result)

如果您知道bin名称,请按以下方式检索结果。

A_bin_df = results['A_bin']
print(A_bin_df)
B_bin_df = results['B_bin']
print(B_bin_df)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何相对于其他数据框列顺序对 r 数据框的列名进行排序

Python:创建新的数据框列,该列显示相对于其他列值的排名

检索相对于数据框中特定行具有今天日期的列名

使用其他数据框的值,根据列名称乘以熊猫数据框的行

根据行值的条件从数据框中提取列名

熊猫使用其他2个查找数据框中的值在一个数据框中提取数据

如何相对于月份替换熊猫数据框行值

如何从其他列中提取元素相对于另一个值的索引值?

相对于函数输出合并熊猫数据框

合并2个数据框并创建相对于几列的值列表

使用其他数据框的特定值附加数据框行-python

提取具有两个其他值之间的值的数据框行

在Spark数据框中提取第二行值

根据其他列的条件提取数据框的行子集

如何按其他列的条件按行值提取数据框?

遍历Pandas数据框中的行以查找其他文件中的值并提取索引

将大于100的数据框中的所有值替换为相对于100的值。即120到80

根据python中的数据从数据框中提取列名

从数据框列表中提取数据集的列名

在相对于其他值的OCR之后提取JSON值?

根据其他数据框的条件提取数据框的元素

使用R从数据框中提取唯一值

使用R根据值的变化从数据框中提取多行

如何从数据框中提取某个值?

从熊猫数据框中提取单个值

根据相对于指定行的滞后和超前范围将数据框中的行子集化

使用n个元素的列表从数据框中提取行

从数据框中提取事件行

R:从数据框中提取某些行