如何将列表中的值分配给python数据框中的列/行?
反之,我只能使用以下命令执行list_name = df.iloc[x, y]
。但是,当我尝试命令df.iloc[x, y] = list_name
时,我无法将list_name中的值转换为df.iloc[x, y]
。
在这种情况下,将list_name中的值转换为df.iloc[x, y]
的正确命令应该是什么?
答案 0 :(得分:0)
不幸的是,iloc
索引的设计目的不是像获取一样多用。但是,如果要像示例中那样使行x
和列y
保持动态,则有一些解决方法。
对于以下内容,我使用pandas.Dataframe documentation example作为起始,如下所示。
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
当我们有这样的行时,我们可以使用索引300
获得该值'c'
。
> df.iloc[x]['c']
300
但是,如果只有列索引,则需要首先获取此名称。
要将索引y
转换为列名,我们可以使用dataframe axes
property,如下所示:
> y = 2
> df.axes[1][y]
c
现在,如果我们要使用x
和y
来引用数据帧中的特定条目,我们可以先获取row
然后获取{{1} }:
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
设置的999
。