使用Pandas中的数字创建一个新列,以使用包含现有数字的列进行分组

时间:2018-06-13 09:25:40

标签: python pandas numpy dataframe data-structures

美好的一天,

我在这里有一个数据框的列:

 A
 23
 10
 11 
 22

我的目标是创建一个新列并将数字关联起来:

A     file_number
23        8
10        6
11        6
22        8

如上所示,数字22,23都与数字8相关联,数字10和11与数字6相关联。如何创建这样的列?提前致谢

1 个答案:

答案 0 :(得分:1)

我认为如果需要通过字典的map的第一个数字值创建新值:

print (df['A'].apply(type))
0    <class 'int'>
1    <class 'int'>
2    <class 'int'>
3    <class 'int'>
Name: A, dtype: object

df['new'] = (df['A'] // 10).map({1:6, 2:8})
print (df)
    A  new
0  23    8
1  10    6
2  11    6
3  22    8

<强>详细

print ((df['A'] // 10))
0    2
1    1
2    1
3    2
Name: A, dtype: int64

另一个解决方案适用于字符串:

df['new'] = df['A'].astype(str).str[0].map({'1':6, '2':8})
print (df['A'].apply(type))
0    <class 'str'>
1    <class 'str'>
2    <class 'str'>
3    <class 'str'>
Name: A, dtype: object

df['new'] = df['A'].str[0].map({'1':6, '2':8})

如果需要将正数转换为第一个数字,请使用转换为numpy/pandas的{​​{3}}解决方案:

df['new'] = df['A'] // 10 ** np.log10(df['A'].values).astype(int)

print (df)
        A  new
0       2    2
1   10000    1
2     110    1
3  220000    2