pandas 在特定列中查找列名并输入其编号

vaqhlq81  于 2023-05-27  发布在  其他
关注(0)|答案(1)|浏览(190)

我将使用pandas从column 1中找到列名。在第0列中输入的文本中找到列名,然后以数字形式输入数字。

import pandas as pd

data = [['EA',0,0,0], ['col2,col2', 0, 0,0], ['col3', 0,0,0]]
df_input = pd.DataFrame(data, columns=[0, 'EA', 'col2', 'col3'])
df_input

data = [['EA',1,0,0], ['col2,col2', 0, 2,0], ['col3', 0,0,1]]
df_output = pd.DataFrame(data, columns=[0, 'EA', 'col2', 'col3'])
df_output
pkwftd7m

pkwftd7m1#

您可以使用str.extractall然后使用crosstab

s = (df_input[0]
     .str.extractall('([^,]+)')[0]
     .droplevel(-1)
     )

# update in place
df_input.update(pd.crosstab(s.index, s))

或者对于新的DataFrame:

df_output = (pd.crosstab(s.index, s)
               .combine_first(df_input)
               .reindex_like(df_input)
             )

输出:

0  EA  col2  col3
0         EA   1     0     0
1  col2,col2   0     2     0
2       col3   0     0     1

如果col2,col2col2,col3,则输出:

0  EA  col2  col3
0         EA   1     0     0
1  col2,col3   0     1     1
2       col3   0     0     1

相关问题