我尝试过与其他问题不同的方法,但似乎仍无法找到问题的正确答案.关键的一点是,如果这个人被算作西班牙裔,他们就不能算作别的了.即使他们在另一个种族栏目中有"1",他们仍被视为西班牙裔,而不是两个或更多种族.同样,如果所有ERI列的总和大于1,则它们被计为两个或更多种族,不能被视为独特的种族(接受西班牙裔).希望这是有道理的.任何帮助将不胜感激.
它几乎就像在每行中执行for循环一样,如果每条记录符合条件,它们将被添加到一个列表中并从原始列表中删除.
从下面的数据框中,我需要根据以下内容计算新列:
========================= CRITERIA ======================== =======
IF [ERI_Hispanic] = 1 THEN RETURN “Hispanic”
ELSE IF SUM([ERI_AmerInd_AKNatv] + [ERI_Asian] + [ERI_Black_Afr.Amer] + [ERI_HI_PacIsl] + [ERI_White]) > 1 THEN RETURN “Two or More”
ELSE IF [ERI_AmerInd_AKNatv] = 1 THEN RETURN “A/I AK Native”
ELSE IF [ERI_Asian] = 1 THEN RETURN “Asian”
ELSE IF [ERI_Black_Afr.Amer] = 1 THEN RETURN “Black/AA”
ELSE IF [ERI_HI_PacIsl] = 1 THEN RETURN “Haw/Pac Isl.”
ELSE IF [ERI_White] = 1 THEN RETURN “White”
Run Code Online (Sandbox Code Playgroud)
评论:如果西班牙裔美国人的ERI标志为真(1),那么员工被归类为"西班牙裔"
评论:如果超过1个非西班牙语ERI标志为真,则返回"两个或更多"
====================== DATAFRAME =========================== …
我有一个像这样的熊猫数据框(它是一个非常大的)
date exer exp ifor mat
1092 2014-03-17 American M 528.205 2014-04-19
1093 2014-03-17 American M 528.205 2014-04-19
1094 2014-03-17 American M 528.205 2014-04-19
1095 2014-03-17 American M 528.205 2014-04-19
1096 2014-03-17 American M 528.205 2014-05-17
Run Code Online (Sandbox Code Playgroud)
现在我想逐行迭代,当我遍历每一行时,每行的值ifor
可以根据某些条件改变,我需要查找另一个数据帧.
现在,我如何在迭代时更新它.尝试了一些他们都没有工作的事情.
for i, row in df.iterrows():
if <something>:
row['ifor'] = x
else:
row['ifor'] = y
df.ix[i]['ifor'] = x
Run Code Online (Sandbox Code Playgroud)
这些方法似乎都不起作用.我没有看到数据框中的值已更新.
我有一个pandas DataFrame , df_test. 它包含一个列'size',表示以字节为单位的大小.我使用以下代码计算了KB,MB和GB:
df_test = pd.DataFrame([
{'dir': '/Users/uname1', 'size': 994933},
{'dir': '/Users/uname2', 'size': 109338711},
])
df_test['size_kb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0, grouping=True) + ' KB')
df_test['size_mb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0 ** 2, grouping=True) + ' MB')
df_test['size_gb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0 ** 3, grouping=True) + ' GB')
df_test
dir size size_kb size_mb size_gb
0 /Users/uname1 994933 971.6 KB 0.9 MB 0.0 GB
1 /Users/uname2 109338711 106,776.1 KB 104.3 MB …Run Code Online (Sandbox Code Playgroud) 我正在分析一个形状类似于以下示例的数据集.我有两种不同类型的数据(abc数据和xyz数据):
abc1 abc2 abc3 xyz1 xyz2 xyz3
0 1 2 2 2 1 2
1 2 1 1 2 1 1
2 2 2 1 2 2 2
3 1 2 1 1 1 1
4 1 1 2 1 2 1
Run Code Online (Sandbox Code Playgroud)
我想创建一个函数,为数据框中存在的每个abc列添加一个分类列.使用列名列表和类别映射字典,我能够得到我想要的结果.
abc_columns = ['abc1', 'abc2', 'abc3']
xyz_columns = ['xyz1', 'xyz2', 'xyz3']
abc_category_columns = ['abc1_category', 'abc2_category', 'abc3_category']
categories = {1: 'Good', 2: 'Bad', 3: 'Ugly'}
for i in range(len(abc_category_columns)):
df3[abc_category_columns[i]] = df3[abc_columns[i]].map(categories)
print …Run Code Online (Sandbox Code Playgroud)