我有以下熊猫数据框。

import pandas as pd
df = pd.read_csv('filename.csv')

print(df)

      sample      column_A
0     sample1        6/6
1     sample2        0/4
2     sample3        2/6
3     sample4       12/14
4     sample5       15/21
5     sample6       12/12
..    ....

column_A中的值不是分数,必须对这些数据进行操作,以便我可以将每个值转换为0s1s(而不是将整数转换为它们的二进制对应值)。
上面的“分子”给出了1s的总数,而“分母”给出了0s1s的总数。
因此,该表实际上应采用以下格式:
      sample      column_A
0     sample1     111111
1     sample2     0000
2     sample3     110000
3     sample4     11111111111100
4     sample5     111111111111111000000
5     sample6     111111111111
..    ....

我从未解析过整数来输出0和1这样的字符串。怎么做到的?是否有“pandas方法”可用于lambda表达式?pythonic字符串解析还是regex?

最佳答案

首先,假设您编写了一个函数:

def to_binary(s):
    n_d = s.split('/')
    n, d = int(n_d[0]), int(n_d[1])
    return '1' * n + '0' * (d - n)

以便,
>>> to_binary('4/5')
'11110'

现在你只需要使用pandas.Series.apply
 df.column_A.apply(to_binary)

09-27 15:41