如何遍历列中的值并将其添加为新列?

时间:2020-06-16 01:24:12

标签: python csv

我得到一个包含列(“营养成分”)的数据框,并被要求遍历单元格中的每个值,提取出营养成分列中的每个值,并将其附加到新列中。例如,将51.5、173.4、269.8、368.1和352.9(“营养事实”列中每行的第一个值)分别添加到名为“ One One”的新列中。问题是要我使用循环来执行此操作。我在创建此循环时遇到了麻烦。任何帮助将不胜感激。enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用pandas apply方法,而不是迭代shell中的所有值。例如:

import pandas as pd 
import numpy as np 


def function(val):
   return val*val

df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
df['C']=df['A'].apply(function)
print(df)

这将给出这样的输出。

   A  B   C
0  4  9  16
1  4  9  16
2  4  9  16

首先,您必须定义与您的需求相关的自己的功能。在这里,以我的示例为例,我获取列'A'中的所有值,并在名为'C'的另一列后附加平方值'A'

编辑

在您的情况下,以下代码将起作用,

def function(data):
    return data[0]

df['column_One']=df['Nutrition Facts'].apply(function)

答案 1 :(得分:0)

简单的解决方案:
使用pd.Series()展开,然后合并:

df_temp = df["Nutrition Facts"].apply(pd.Series)

df.merge(df_temp, left_index=True)

使用for循环:
遍历值并添加到字典数组中:

expanded_data = []
for row in df["Nutrition Facts"].values:
    row_data = {}
    for i, value in enumerate(row):
        row_data[i] = value
    # Save to all data
    expanded_data.append(row_data)

# Now convert to a dataframe and merge
df_temp = pd.DataFrame.from_records(expanded_data)

df.merge(df_temp, left_index=True)