python - 转换 Pandas 数据框

标签 python pandas dataframe

是否有一个 pandas 函数来转换此数据,以便将列显示为 a、b、c、d、e 或数据字段中的任何内容,并在行中计算字母的数量。

import pandas as pd

trans = pd.read_table('output.txt', header=None, index_col=0)

print trans
>>> 
        1  2    3    4
0                     
11      a  b    c  NaN
666     a  d    e  NaN
10101   b  c    d  NaN
1010    a  b    c    d
414147  b  c  NaN  NaN
10101   a  b    d  NaN
1242    d  e  NaN  NaN
101     a  b    c    d
411     c  d    e  NaN
444     a  b    c  NaN

相反,我希望输出是这样的:

        a  b    c     d   e
0                     
11      1  1    1   NaN  NaN
666     1  NaN  NaN   1    1

函数 .stack() 几乎可以完成它,但格式错误。

最佳答案

你也可以使用 Pandas get_dummies()

pd.get_dummies(df.unstack().dropna()).groupby(level=1).sum()

结果:

        a  b  c  d  e
0                    
11      1  1  1  0  0
666     1  0  0  1  1
10101   0  1  1  1  0
1010    1  1  1  1  0
414147  0  1  1  0  0
10101   1  1  0  1  0
1242    0  0  0  1  1
101     1  1  1  1  0
411     0  0  1  1  1
444     1  1  1  0  0

您可以根据需要用 NaN 替换零。

它在一行中有点晦涩。 df.unstack().dropna() 基本上将您的 DataFrame 扁平化为一系列并丢弃所有 NaN。 get_dummies 给出了所有字母出现的表格,但针对的是 unstack DataFrame 中的每个级别。分组和求和然后将索引组合到原始形状。

关于python - 转换 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20545613/

相关文章:

python - 如何在添加 timedelta 时不从 datetime 开始第二天?

Python:使用 for 循环创建 matplotlib 子图

python - 将新数据框插入现有数据框到 Pandas 中的特定行位置

r - 只有组中差异小于 'n' 的行

删除第一次出现的数据框 R

python - 从数据帧中查找字符串内的子字符串索引

python - 使用特征名称绘制特征重要性

python - 如何将字典列表写入具有多个值的 CSV

python - 堆叠标题,而不是两列

python numpy 在返回意外警告的地方