[英]How to use an index of a dataframe to assign values to a row of a new column?
[英]How to assign the values in a list to a column/row in a dataframe?
如何将列表中的值分配给 python dataframe 中的列/行?
我只能使用以下命令反之亦然: list_name = df.iloc[x, y]
。 但是,当我尝试命令df.iloc[x, y] = list_name
时,我未能将 list_name 中的值转换为df.iloc[x, y]
。
在这种情况下,将 list_name 中的值转换为df.iloc[x, y]
的正确命令应该是什么?
不幸的是, iloc
索引并不是为设置而设计的。 但是,如果您想让行x
和列y
像示例中那样动态,则有一些解决方法。
对于以下内容,我使用了pandas.Dataframe文档示例,我们从 dataframe 开始,如下所示。
my_dict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
{'a': 100, 'b': 200, 'c': 300, 'd': 400},
{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pandas.DataFrame(my_dict)
很简单,您可以通过df.iloc[x]
获得您的行。 如果你有x = 1
,在上面的例子中,我们会得到:
> df.iloc[x]
a 100
b 200
c 300
d 400
当我们有这样的一行时,我们可以通过使用索引'c'
获得该值300
。
> df.iloc[x]['c']
300
但是,如果您只有列索引,则需要先获取此名称。
要将索引y
转换为列名,我们可以使用dataframe axes
属性,如下所示:
> y = 2
> df.axes[1][y]
c
现在,如果我们想使用x
和y
来引用 dataframe 中的特定条目,我们可以通过先获取row
然后获取column
来实现,如下所示:
row = df.iloc[x]
column = df.axes[1][y]
row[column] = desired_value
或者,如果你想单行:
df.iloc[x][df.axes[1][y]]
这是一个完整的例子。
import pandas
x = 1
y = 2
my_dict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
{'a': 100, 'b': 200, 'c': 300, 'd': 400},
{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pandas.DataFrame(my_dict)
desired_value = 999
row = df.iloc[x]
column = df.axes[1][y]
row[column] = desired_value
print(df)
最后的打印语句给了我们:
a b c d
0 1 2 3 4
1 100 200 999 400
2 1000 2000 3000 4000
注意我们用row[column] = desired_value
设置的999
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.