Python 如何基于列中的数值创建逗号分隔的数字列表
我试图找出如何根据特定列中的数值创建逗号分隔的数字列表。例如,如果数值列的值为5,我想在另一列中创建一个逗号分隔的数字列表,即1、2、3、4、5 假设我们从这个数据帧开始:Python 如何基于列中的数值创建逗号分隔的数字列表,python,pandas,string,Python,Pandas,String,我试图找出如何根据特定列中的数值创建逗号分隔的数字列表。例如,如果数值列的值为5,我想在另一列中创建一个逗号分隔的数字列表,即1、2、3、4、5 假设我们从这个数据帧开始: inventory_partner inventory_partner2 calc 0 A1 aa 1 1 A2 bb 2 2 A3
inventory_partner inventory_partner2 calc
0 A1 aa 1
1 A2 bb 2
2 A3 cc 5
3 A4 dd 4
4 A5 ee 5
5 A6 ff 3
我正在尝试访问此数据帧,而不必手动在列表中为每个计算数字可能性编码:
inventory_partner inventory_partner2 calc my_comma_list
0 A1 aa 1 1
1 A2 bb 2 1, 2
2 A3 cc 5 1, 2, 3, 4, 5
3 A4 dd 4 1, 2, 3, 4
4 A5 ee 5 1, 2, 3, 4, 5
5 A6 ff 3 1, 2, 3
下面是我的代码,它基于每个计算值手动创建一个要应用的数字列表。使用for循环有没有更简单的方法?我在下面的代码中尝试了它,但无法获取要在for循环中使用的calc值
#create dataframe
d = {'inventory_partner': ['A1', 'A2', 'A3', 'A4', 'A5', 'A6'], 'inventory_partner2': ['aa', 'bb', 'cc', 'dd', 'ee', 'ff'], 'calc': [1, 2, 5, 4, 5, 3]}
df1 = pd.DataFrame(data=d)
print(df1) #print original dataframe
#create my_comma_list column based on number values in calc column - too much code
df1.insert(3, 'my_comma_list', '')
df1.loc[df1['calc'] == 1, 'my_comma_list'] = '1'
df1.loc[df1['calc'] == 2, 'my_comma_list'] = '1, 2'
df1.loc[df1['calc'] == 3, 'my_comma_list'] = '1, 2, 3'
df1.loc[df1['calc'] == 4, 'my_comma_list'] = '1, 2, 3, 4'
df1.loc[df1['calc'] == 5, 'my_comma_list'] = '1, 2, 3, 4, 5'
#df1['inventory_partner'] = ",".join([str(i) for i in range(0, df1['calc'].values)]) #I tried something like this but it can't fetch the calc value and use it in the for loop
print(df1)
您可以使用df.apply在从“calc”创建的范围对象上应用str.join:
您可以使用apply函数并在单独的函数中创建响应,这样就可以将其隔离
import pandas as pd
d = {'inventory_partner': ['A1', 'A2', 'A3', 'A4', 'A5', 'A6'], 'inventory_partner2': ['aa', 'bb', 'cc', 'dd', 'ee', 'ff'], 'calc': [1, 2, 5, 4, 5, 3]}
df1 = pd.DataFrame(data=d)
print(df1) #print original dataframe
def create_comma_list(number):
res = []
for n in range(1,number+1):
res.append(str(n))
return ", ".join(res)
df1["my_comma_list"] = df1.apply(lambda x: create_comma_list(x.calc), axis=1)
print(df1)
资料来源:
尝试使用应用。加入:
谢谢这很有效。
import pandas as pd
d = {'inventory_partner': ['A1', 'A2', 'A3', 'A4', 'A5', 'A6'], 'inventory_partner2': ['aa', 'bb', 'cc', 'dd', 'ee', 'ff'], 'calc': [1, 2, 5, 4, 5, 3]}
df1 = pd.DataFrame(data=d)
print(df1) #print original dataframe
def create_comma_list(number):
res = []
for n in range(1,number+1):
res.append(str(n))
return ", ".join(res)
df1["my_comma_list"] = df1.apply(lambda x: create_comma_list(x.calc), axis=1)
print(df1)
df['my_comm_list'] = df['calc'].apply(lambda x: ', '.join(np.arange(1,x+1).astype(str)) )