Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何在数组、列表或数据帧中的每个一位数元素的末尾追加1?_Python_Arrays_Pandas_Append_Dataframe - Fatal编程技术网

在Python中,如何在数组、列表或数据帧中的每个一位数元素的末尾追加1?

在Python中,如何在数组、列表或数据帧中的每个一位数元素的末尾追加1?,python,arrays,pandas,append,dataframe,Python,Arrays,Pandas,Append,Dataframe,我发现使用数组很难做到这一点,但无论使用哪种输出方法,我都可以。 我想从我的数据帧中获取一列,该数据帧有一位数和两位数。 这些项当前是整数,但它们可以转换为执行任务所需的str或bool 我想在所有单个数字的末尾添加一个1,例如,如果第一个数字是2,那么我希望它返回21 最后,一旦这些操作完成,我需要将数字一分为二并创建两列。 比如说 col['a'] = [3, 22, 23, 2, 1] 因此,我的输出应该如下所示: col['a'] = [31, 22, 23, 21, 11] 然

我发现使用数组很难做到这一点,但无论使用哪种输出方法,我都可以。 我想从我的数据帧中获取一列,该数据帧有一位数和两位数。
这些项当前是整数,但它们可以转换为执行任务所需的
str
bool

我想在所有单个数字的末尾添加一个
1
,例如,如果第一个数字是
2
,那么我希望它返回
21

最后,一旦这些操作完成,我需要将数字一分为二并创建两列。 比如说

col['a'] = [3, 22, 23, 2, 1] 
因此,我的输出应该如下所示:

col['a'] = [31, 22, 23, 21, 11] 
然后,我很可能会做类似的事情

col['b'] = col['a'][0:] 
[3,2,2,2,1] 


假设您的数据是数字。您可以使用
np.mod(data,10)
获取最后一位数字

import pandas as pd
import numpy as np

# data
# ===========================
df = pd.DataFrame({'a': [31, 22, 23, 21, 11]})
df.dtypes

a    int64
dtype: object


# processing
# =====================================
df['c'] = np.mod(df.a, 10)

df
    a  c
0  31  1
1  22  2
2  23  3
3  21  1
4  11  1    
编辑: 要在每个单个数字的末尾添加1,请执行以下操作:

df = pd.DataFrame({'a': [31,22,23,21,11,1,2,3,4,5]})

df

    a
0  31
1  22
2  23
3  21
4  11
5   1
6   2
7   3
8   4
9   5


single_digit_selector = df.a - np.mod(df.a, 10) == 0
df[single_digit_selector] = df[single_digit_selector] * 10 + 1
df

    a
0  31
1  22
2  23
3  21
4  11
5  11
6  21
7  31
8  41
9  51

假设您的数据是数字。您可以使用
np.mod(data,10)
获取最后一位数字

import pandas as pd
import numpy as np

# data
# ===========================
df = pd.DataFrame({'a': [31, 22, 23, 21, 11]})
df.dtypes

a    int64
dtype: object


# processing
# =====================================
df['c'] = np.mod(df.a, 10)

df
    a  c
0  31  1
1  22  2
2  23  3
3  21  1
4  11  1    
编辑: 要在每个单个数字的末尾添加1,请执行以下操作:

df = pd.DataFrame({'a': [31,22,23,21,11,1,2,3,4,5]})

df

    a
0  31
1  22
2  23
3  21
4  11
5   1
6   2
7   3
8   4
9   5


single_digit_selector = df.a - np.mod(df.a, 10) == 0
df[single_digit_selector] = df[single_digit_selector] * 10 + 1
df

    a
0  31
1  22
2  23
3  21
4  11
5  11
6  21
7  31
8  41
9  51
>>df
A.
0   3
1  22
2  23
3   2
4   1
df['aa']=df.apply(lambda行:行['a']*10+1,如果0>df
aa
0   3  31
1  22  22
2  23  23
3   2  21
4   1  11
df['b']=df.apply(lambda行:divmod(行['aa'],10)[0],轴=1)
df['c']=df.apply(lambda行:divmod(行['aa'],10)[1],轴=1)
>>>df
a aa b c
0   3  31  3  1
1  22  22  2  2
2  23  23  2  3
3   2  21  2  1
4   1  11  1  1
>>df
A.
0   3
1  22
2  23
3   2
4   1
df['aa']=df.apply(lambda行:行['a']*10+1,如果0>df
aa
0   3  31
1  22  22
2  23  23
3   2  21
4   1  11
df['b']=df.apply(lambda行:divmod(行['aa'],10)[0],轴=1)
df['c']=df.apply(lambda行:divmod(行['aa'],10)[1],轴=1)
>>>df
a aa b c
0   3  31  3  1
1  22  22  2  2
2  23  23  2  3
3   2  21  2  1
4   1  11  1  1

我会这样做:

single_digit = col.a < 10
col['b'] = col.a.where(single_digit, col.a.values / 10)
col['c'] = np.where(single_digit, 1, np.mod(col.a, 10))
单个数字=列a<10
列['b']=列a.式(一位数,列a.值/10)
列['c']=np.式中(一位数,1,np.mod(a列,10))

因此,如果a<10,b就是a,反之则是整数除以10的结果。请注意,numpy数组支持整数除法,而pandas系列不支持整数除法(据我所知),这就是为什么我有
col.a.values/10
。对于c列,如果a<10,我们有1,反之则a mod 10。

我会这样做:

single_digit = col.a < 10
col['b'] = col.a.where(single_digit, col.a.values / 10)
col['c'] = np.where(single_digit, 1, np.mod(col.a, 10))
单个数字=列a<10
列['b']=列a.式(一位数,列a.值/10)
列['c']=np.式中(一位数,1,np.mod(a列,10))


因此,如果a<10,b就是a,反之则是整除10的结果。请注意,numpy数组支持整除,而pandas系列不支持整除(据我所知)这就是为什么我有
col.a.values/10
。对于c列,如果a<10,我们有1,否则我们有a mod 10。

您应该使用字符串数组并找到每个字符串的长度。如果len(变量)<2,则变量+“1”很抱歉,您的元素都是个位数,都是整数吗?@FirebladeDan是的,这是我的初衷,但我似乎没有像我想的那样进行锻炼。@EdChum不,它们都是整数,但我可以将它们转换为任何其他数据类型。目前它们是个位数和个位数,我想在所有个位数的末尾加一个1,使所有的t都变为整数数字为两位数。1表示默认值。应使用字符串数组并查找每个字符串的长度。如果len(变量)<2,则变量+1很抱歉,您的元素都是个位数,都是整数吗?@FirebladeDan是的,这是我的初衷,但我似乎没有像我想的那样进行锻炼。@EdChum不,它们都是整数,但我可以将它们转换为任何其他数据类型。目前它们是个位数和个位数,我想在所有个位数的末尾加一个1,使所有的t都变为整数数字是两位数。1代表默认值。谢谢,这样可以检索最后一位数字。我必须先将所有的单位数转换为以1结尾的双位数though@rsotommx我已经编辑了我的答案,这就是你想要的吗?上帝,我在这里看到的np和pd答案越多,我就越有决心去寻找用这个做点什么,这样我就可以学习了谢谢,这可以用来检索最后一个数字。我必须先把所有的单位数转换成以1结尾的双位数though@rsotommx我已经编辑了我的答案,这就是你想要的吗?上帝,我在这里看到的np和pd答案越多,我就越有决心去寻找答案用它来做,这样我就可以学习乘10加1可能比转换为字符串,concat a“1”,然后再转换为int:)True。改为乘10加1。乘10加1可能比转换为字符串,concat a“1”,然后再转换为int:)True更容易。改为乘10加1。